lsst.sphgeom
20.0.0-3-gd2e950e
|
Go to the documentation of this file.
23 #ifndef LSST_SPHGEOM_INTERVAL_H_
24 #define LSST_SPHGEOM_INTERVAL_H_
47 template <
typename Derived,
typename Scalar>
65 bool operator!=(
Interval const & i)
const {
return !(*
this == i); }
69 return (_a == x && _b == x) || (x != x &&
isEmpty());
72 bool operator!=(Scalar x)
const {
return !(*
this == x); }
76 Scalar
getA()
const {
return _a; }
80 Scalar
getB()
const {
return _b; }
89 Scalar
getCenter()
const {
return 0.5 * (_a + _b); }
93 Scalar
getSize()
const {
return _b - _a; }
99 return (_a <= x && x <= _b) || x != x;
108 return _a <= x._a && _b >= x._b;
123 return _a > x._b || _b < x._a;
130 bool intersects(Scalar x)
const {
return _a <= x && x <= _b; }
141 return (_a == x && _b == x) ||
isEmpty();
164 _a = std::max(_a, x);
165 _b = std::min(_b, x);
174 _a = std::max(_a, x._a);
175 _b = std::min(_b, x._b);
208 _a = std::min(_a, x._a);
209 _b = std::max(_b, x._b);
239 Derived dilatedBy(Scalar x)
const {
return Interval(*this).dilateBy(x); }
240 Derived erodedBy(Scalar x)
const {
return Interval(*this).erodeBy(x); }
248 template <
typename Derived,
typename Scalar>
252 return CONTAINS | DISJOINT | WITHIN;
254 return DISJOINT | WITHIN;
257 return CONTAINS | DISJOINT;
259 if (_a == x && _b == x) {
260 return CONTAINS | WITHIN;
268 template <
typename Derived,
typename Scalar>
274 return CONTAINS | DISJOINT | WITHIN;
276 return DISJOINT | WITHIN;
279 return CONTAINS | DISJOINT;
281 if (_a == x._a && _b == x._b) {
282 return CONTAINS | WITHIN;
284 if (_a > x._b || _b < x._a) {
287 if (_a <= x._a && _b >= x._b) {
290 if (x._a <= _a && x._b >= _b) {
298 #endif // LSST_SPHGEOM_INTERVAL_H_
Scalar getCenter() const
Definition: Interval.h:89
Derived clippedTo(Scalar x) const
Definition: Interval.h:183
std::bitset< 3 > Relationship
Relationship describes how two sets are related.
Definition: Relationship.h:35
Definition: Interval.h:48
This file provides a type alias for describing set relationships.
Interval & clipTo(Scalar x)
Definition: Interval.h:159
Scalar getSize() const
Definition: Interval.h:93
bool operator==(Scalar x) const
A closed interval is equal to a point x if both endpoints equal x.
Definition: Interval.h:68
Scalar getA() const
Definition: Interval.h:76
bool isEmpty() const
isEmpty returns true if this interval does not contain any points.
Definition: Interval.h:83
Interval()
This constructor creates an empty interval.
Definition: Interval.h:51
Interval(Scalar x)
This constructor creates a closed interval containing only x.
Definition: Interval.h:54
Relationship relate(Scalar x) const
Definition: Interval.h:249
Scalar getB() const
Definition: Interval.h:80
bool isDisjointFrom(Scalar x) const
Definition: Interval.h:115
bool contains(Scalar x) const
Definition: Interval.h:98
bool isWithin(Scalar x) const
Definition: Interval.h:140
Derived expandedTo(Scalar x) const
Definition: Interval.h:218
Interval(Scalar x, Scalar y)
This constructor creates an interval from the given endpoints.
Definition: Interval.h:57
Interval & dilateBy(Scalar x)
Definition: Interval.h:230
Interval & expandTo(Scalar x)
Definition: Interval.h:192
bool operator==(Interval const &i) const
Definition: Interval.h:61
bool intersects(Scalar x) const
Definition: Interval.h:130