![]() |
Open CASCADE Technology Reference Manual 8.0.0
|
This class describes a range in 1D space restricted by two real values. A range can be void indicating there is no point included in the range. More...
#include <Bnd_Range.hxx>
Data Structures | |
| struct | Bounds |
| Structure containing the range bounds (Min, Max). Can be used with C++17 structured bindings: More... | |
Public Types | |
| enum | IntersectStatus { IntersectStatus_Out = 0 , IntersectStatus_In = 1 , IntersectStatus_Boundary = 2 } |
| Status of intersection check with a periodic value. More... | |
Public Member Functions | |
| Bnd_Range () | |
| Default constructor. Creates VOID range. | |
| Bnd_Range (const double theMin, const double theMax) | |
| Constructor. Never creates VOID range. | |
| void | Common (const Bnd_Range &theOther) |
| Replaces <this> with common-part of <this> and theOther. | |
| bool | Union (const Bnd_Range &theOther) |
| Joins *this and theOther to one interval. Replaces *this to the result. Returns false if the operation cannot be done (e.g. input arguments are empty or separated). | |
| void | Split (const double theVal, NCollection_List< Bnd_Range > &theList, const double thePeriod=0.0) const |
| Splits <this> to several sub-ranges by theVal value (e.g. range [3, 15] will be split by theVal==5 to the two ranges: [3, 5] and [5, 15]). New ranges will be pushed to theList (theList must be initialized correctly before calling this method). If thePeriod != 0.0 then at least one boundary of new ranges (if <*this> intersects theVal+k*thePeriod) will be equal to theVal+thePeriod*k, where k is an integer number (k = 0, +/-1, +/-2, ...). (let thePeriod in above example be 4 ==> we will obtain four ranges: [3, 5], [5, 9], [9, 13] and [13, 15]. | |
| IntersectStatus | IsIntersected (const double theVal, const double thePeriod=0.0) const |
| Checks if <this> intersects values like theVal+k*thePeriod, where k is an integer number (k = 0, +/-1, +/-2, ...). | |
| void | Add (const double theParameter) |
| Extends <this> to include theParameter. | |
| void | Add (const Bnd_Range &theRange) |
| Extends this range to include both ranges. | |
| bool | GetMin (double &thePar) const |
| Obtain MIN boundary of <this>. If <this> is VOID the method returns false. | |
| bool | GetMax (double &thePar) const |
| Obtain MAX boundary of <this>. If <this> is VOID the method returns false. | |
| bool | GetBounds (double &theFirstPar, double &theLastPar) const |
| Obtain first and last boundary of <this>. If <this> is VOID the method returns false. | |
| std::optional< Bounds > | Get () const noexcept |
| Returns the bounds of this range as a Bounds structure. Returns std::nullopt if IsVoid(). Can be used with C++17 structured bindings: | |
| bool | GetIntermediatePoint (const double theLambda, double &theParameter) const |
| Obtain theParameter satisfied to the equation (theParameter-MIN)/(MAX-MIN) == theLambda. | |
| std::optional< double > | Center () const noexcept |
| Returns the center of this range ((Min + Max) / 2). Returns std::nullopt if IsVoid(). | |
| double | Delta () const noexcept |
| Returns range value (MAX-MIN). Returns negative value for VOID range. | |
| bool | IsVoid () const noexcept |
| Is <this> initialized. | |
| void | SetVoid () noexcept |
| Initializes <this> by default parameters. Makes <this> VOID. | |
| void | Enlarge (const double theDelta) noexcept |
| Extends this to the given value (in both side) | |
| Bnd_Range | Shifted (const double theVal) const |
| Returns the copy of <*this> shifted by theVal. | |
| void | Shift (const double theVal) noexcept |
| Shifts <*this> by theVal. | |
| void | TrimFrom (const double theValLower) noexcept |
| Trims the First value in range by the given lower limit. Marks range as Void if the given Lower value is greater than range Max. | |
| void | TrimTo (const double theValUpper) noexcept |
| Trim the Last value in range by the given Upper limit. Marks range as Void if the given Upper value is smaller than range Max. | |
| bool | IsOut (double theValue) const noexcept |
| Returns True if the value is out of this range. | |
| bool | IsOut (const Bnd_Range &theRange) const noexcept |
| Returns True if the given range is out of this range. | |
| bool | Contains (double theValue) const noexcept |
| Returns True if the value is within this range. | |
| bool | Intersects (const Bnd_Range &theRange) const noexcept |
| Returns True if the given range intersects (overlaps with) this range. | |
| std::optional< double > | Min () const noexcept |
| Returns the MIN boundary of <this>. Returns std::nullopt if IsVoid(). | |
| std::optional< double > | Max () const noexcept |
| Returns the MAX boundary of <this>. Returns std::nullopt if IsVoid(). | |
| bool | operator== (const Bnd_Range &theOther) const noexcept |
| Returns TRUE if theOther is equal to <*this> | |
| void | DumpJson (Standard_OStream &theOStream, int theDepth=-1) const |
| Dumps the content of me into the stream. | |
This class describes a range in 1D space restricted by two real values. A range can be void indicating there is no point included in the range.
Status of intersection check with a periodic value.
|
inline |
Default constructor. Creates VOID range.
Constructor. Never creates VOID range.
Extends this range to include both ranges.
|
inlinenoexcept |
Returns the center of this range ((Min + Max) / 2). Returns std::nullopt if IsVoid().
Replaces <this> with common-part of <this> and theOther.
Returns True if the value is within this range.
|
inlinenoexcept |
Returns range value (MAX-MIN). Returns negative value for VOID range.
| void Bnd_Range::DumpJson | ( | Standard_OStream & | theOStream, |
| int | theDepth = -1 ) const |
Dumps the content of me into the stream.
Extends this to the given value (in both side)
|
inlinenoexcept |
Obtain first and last boundary of <this>. If <this> is VOID the method returns false.
Obtain theParameter satisfied to the equation (theParameter-MIN)/(MAX-MIN) == theLambda.
Obtain MAX boundary of <this>. If <this> is VOID the method returns false.
Obtain MIN boundary of <this>. If <this> is VOID the method returns false.
Returns True if the given range intersects (overlaps with) this range.
| IntersectStatus Bnd_Range::IsIntersected | ( | const double | theVal, |
| const double | thePeriod = 0.0 ) const |
Checks if <this> intersects values like theVal+k*thePeriod, where k is an integer number (k = 0, +/-1, +/-2, ...).
ATTENTION!!! If (myFirst == myLast) then this function will return only either Out or Boundary.
Returns True if the given range is out of this range.
Returns True if the value is out of this range.
|
inlinenoexcept |
Is <this> initialized.
|
inlinenoexcept |
Returns the MAX boundary of <this>. Returns std::nullopt if IsVoid().
|
inlinenoexcept |
Returns the MIN boundary of <this>. Returns std::nullopt if IsVoid().
Returns TRUE if theOther is equal to <*this>
|
inlinenoexcept |
Initializes <this> by default parameters. Makes <this> VOID.
Returns the copy of <*this> shifted by theVal.
| void Bnd_Range::Split | ( | const double | theVal, |
| NCollection_List< Bnd_Range > & | theList, | ||
| const double | thePeriod = 0.0 ) const |
Splits <this> to several sub-ranges by theVal value (e.g. range [3, 15] will be split by theVal==5 to the two ranges: [3, 5] and [5, 15]). New ranges will be pushed to theList (theList must be initialized correctly before calling this method). If thePeriod != 0.0 then at least one boundary of new ranges (if <*this> intersects theVal+k*thePeriod) will be equal to theVal+thePeriod*k, where k is an integer number (k = 0, +/-1, +/-2, ...). (let thePeriod in above example be 4 ==> we will obtain four ranges: [3, 5], [5, 9], [9, 13] and [13, 15].
Trims the First value in range by the given lower limit. Marks range as Void if the given Lower value is greater than range Max.
Trim the Last value in range by the given Upper limit. Marks range as Void if the given Upper value is smaller than range Max.
Joins *this and theOther to one interval. Replaces *this to the result. Returns false if the operation cannot be done (e.g. input arguments are empty or separated).