LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Static Public Member Functions | List of all members
lsst::sphgeom::AngleInterval Class Reference

AngleInterval represents closed intervals of arbitrary angles. More...

#include <AngleInterval.h>

Inheritance diagram for lsst::sphgeom::AngleInterval:
lsst::sphgeom::Interval< AngleInterval, Angle >

Public Member Functions

 AngleInterval ()
 
 AngleInterval (Angle x)
 
 AngleInterval (Angle x, Angle y)
 
 AngleInterval (Base const &base)
 
bool operator== (Interval const &i) const
 Two closed intervals are equal if their endpoints are the same, or both are empty. More...
 
bool operator== (Angle x) const
 A closed interval is equal to a point x if both endpoints equal x. More...
 
bool operator!= (Interval const &i) const
 
bool operator!= (Angle x) const
 
Angle getA () const
 getA returns the lower endpoint of this interval. More...
 
Angle getB () const
 getB returns the upper endpoint of this interval. More...
 
bool isEmpty () const
 isEmpty returns true if this interval does not contain any points. More...
 
Angle getCenter () const
 getCenter returns the center of this interval. More...
 
Angle getSize () const
 getSize returns the size (length, width) of this interval. More...
 
IntervaldilateBy (Angle x)
 For positive x, dilateBy morphologically dilates this interval by [-x,x], which is equivalent to the taking the Minkowski sum with [-x,x]. More...
 
IntervalerodeBy (Angle x)
 
AngleInterval dilatedBy (Angle x) const
 
AngleInterval erodedBy (Angle x) const
 
bool contains (Angle x) const
 
bool contains (Interval const &x) const
 
bool isDisjointFrom (Angle x) const
 
bool isDisjointFrom (Interval const &x) const
 
bool intersects (Angle x) const
 
bool intersects (Interval const &x) const
 
bool isWithin (Angle x) const
 
bool isWithin (Interval const &x) const
 
Relationship relate (Angle x) const
 
Relationship relate (Interval const &x) const
 
IntervalclipTo (Angle x)
 
IntervalclipTo (Interval const &x)
 
AngleInterval clippedTo (Angle x) const
 
AngleInterval clippedTo (Interval const &x) const
 
IntervalexpandTo (Angle x)
 
IntervalexpandTo (Interval const &x)
 
AngleInterval expandedTo (Angle x) const
 
AngleInterval expandedTo (Interval const &x) const
 

Static Public Member Functions

static AngleInterval fromDegrees (double x, double y)
 
static AngleInterval fromRadians (double x, double y)
 
static AngleInterval empty ()
 
static AngleInterval full ()
 

Detailed Description

AngleInterval represents closed intervals of arbitrary angles.

Definition at line 40 of file AngleInterval.h.

Constructor & Destructor Documentation

◆ AngleInterval() [1/4]

lsst::sphgeom::AngleInterval::AngleInterval ( )
inline

Definition at line 64 of file AngleInterval.h.

64 : Base() {}

◆ AngleInterval() [2/4]

lsst::sphgeom::AngleInterval::AngleInterval ( Angle  x)
inlineexplicit

Definition at line 66 of file AngleInterval.h.

66 : Base(x) {}
double x

◆ AngleInterval() [3/4]

lsst::sphgeom::AngleInterval::AngleInterval ( Angle  x,
Angle  y 
)
inline

Definition at line 68 of file AngleInterval.h.

68 : Base(x, y) {}
int y
Definition: SpanSet.cc:48

◆ AngleInterval() [4/4]

lsst::sphgeom::AngleInterval::AngleInterval ( Base const &  base)
inline

Definition at line 70 of file AngleInterval.h.

70 : Base(base) {}

Member Function Documentation

◆ clippedTo() [1/2]

AngleInterval lsst::sphgeom::Interval< AngleInterval , Angle >::clippedTo ( Angle  x) const
inlineinherited

clippedTo returns the intersection of this interval and x.

Definition at line 183 of file Interval.h.

183 { return Interval(*this).clipTo(x); }
Interval()
This constructor creates an empty interval.
Definition: Interval.h:51

◆ clippedTo() [2/2]

AngleInterval lsst::sphgeom::Interval< AngleInterval , Angle >::clippedTo ( Interval< AngleInterval, Angle > const &  x) const
inlineinherited

clippedTo returns the intersection of this interval and x.

Definition at line 185 of file Interval.h.

185  {
186  return Interval(*this).clipTo(x);
187  }

◆ clipTo() [1/2]

Interval& lsst::sphgeom::Interval< AngleInterval , Angle >::clipTo ( Angle  x)
inlineinherited

clipTo shrinks this interval until all its points are in x.

Definition at line 159 of file Interval.h.

159  {
160  if (x != x) {
161  _a = x;
162  _b = x;
163  } else {
164  _a = std::max(_a, x);
165  _b = std::min(_b, x);
166  }
167  return *this;
168  }
T max(T... args)
T min(T... args)

◆ clipTo() [2/2]

Interval& lsst::sphgeom::Interval< AngleInterval , Angle >::clipTo ( Interval< AngleInterval, Angle > const &  x)
inlineinherited

clipTo shrinks this interval until all its points are in x.

Definition at line 170 of file Interval.h.

170  {
171  if (x.isEmpty()) {
172  *this = x;
173  } else if (!isEmpty()) {
174  _a = std::max(_a, x._a);
175  _b = std::min(_b, x._b);
176  }
177  return *this;
178  }
bool isEmpty() const
isEmpty returns true if this interval does not contain any points.
Definition: Interval.h:83

◆ contains() [1/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::contains ( Angle  x) const
inlineinherited

contains returns true if the intersection of this interval and x is equal to x.

Definition at line 98 of file Interval.h.

98  {
99  return (_a <= x && x <= _b) || x != x;
100  }

◆ contains() [2/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::contains ( Interval< AngleInterval, Angle > const &  x) const
inlineinherited

contains returns true if the intersection of this interval and x is equal to x.

Definition at line 102 of file Interval.h.

102  {
103  if (x.isEmpty()) {
104  return true;
105  } else if (isEmpty()) {
106  return false;
107  }
108  return _a <= x._a && _b >= x._b;
109  }

◆ dilateBy()

Interval& lsst::sphgeom::Interval< AngleInterval , Angle >::dilateBy ( Angle  x)
inlineinherited

For positive x, dilateBy morphologically dilates this interval by [-x,x], which is equivalent to the taking the Minkowski sum with [-x,x].

For negative x, it morphologically erodes this interval by [x,-x]. If x is zero or NaN, or this interval is empty, there is no effect.

Definition at line 230 of file Interval.h.

230  {
231  if (x == x && !isEmpty()) {
232  _a = _a - x;
233  _b = _b + x;
234  }
235  return *this;
236  }

◆ dilatedBy()

AngleInterval lsst::sphgeom::Interval< AngleInterval , Angle >::dilatedBy ( Angle  x) const
inlineinherited

Definition at line 239 of file Interval.h.

239 { return Interval(*this).dilateBy(x); }

◆ empty()

static AngleInterval lsst::sphgeom::AngleInterval::empty ( )
inlinestatic

Definition at line 54 of file AngleInterval.h.

54  {
55  return AngleInterval();
56  }

◆ erodeBy()

Interval& lsst::sphgeom::Interval< AngleInterval , Angle >::erodeBy ( Angle  x)
inlineinherited

Definition at line 238 of file Interval.h.

238 { return dilateBy(-x); }
Interval & dilateBy(Angle x)
For positive x, dilateBy morphologically dilates this interval by [-x,x], which is equivalent to the ...
Definition: Interval.h:230

◆ erodedBy()

AngleInterval lsst::sphgeom::Interval< AngleInterval , Angle >::erodedBy ( Angle  x) const
inlineinherited

Definition at line 240 of file Interval.h.

240 { return Interval(*this).erodeBy(x); }

◆ expandedTo() [1/2]

AngleInterval lsst::sphgeom::Interval< AngleInterval , Angle >::expandedTo ( Angle  x) const
inlineinherited

expandedTo returns the smallest interval containing the union of this interval and x.

Definition at line 218 of file Interval.h.

218 { return Interval(*this).expandTo(x); }

◆ expandedTo() [2/2]

AngleInterval lsst::sphgeom::Interval< AngleInterval , Angle >::expandedTo ( Interval< AngleInterval, Angle > const &  x) const
inlineinherited

expandedTo returns the smallest interval containing the union of this interval and x.

Definition at line 220 of file Interval.h.

220  {
221  return Interval(*this).expandTo(x);
222  }

◆ expandTo() [1/2]

Interval& lsst::sphgeom::Interval< AngleInterval , Angle >::expandTo ( Angle  x)
inlineinherited

expandTo minimally expands this interval to contain x.

Definition at line 192 of file Interval.h.

192  {
193  if (isEmpty()) {
194  _a = x;
195  _b = x;
196  } else if (x < _a) {
197  _a = x;
198  } else if (x > _b) {
199  _b = x;
200  }
201  return *this;
202  }

◆ expandTo() [2/2]

Interval& lsst::sphgeom::Interval< AngleInterval , Angle >::expandTo ( Interval< AngleInterval, Angle > const &  x)
inlineinherited

expandTo minimally expands this interval to contain x.

Definition at line 204 of file Interval.h.

204  {
205  if (isEmpty()) {
206  *this = x;
207  } else if (!x.isEmpty()) {
208  _a = std::min(_a, x._a);
209  _b = std::max(_b, x._b);
210  }
211  return *this;
212  }

◆ fromDegrees()

static AngleInterval lsst::sphgeom::AngleInterval::fromDegrees ( double  x,
double  y 
)
inlinestatic

Definition at line 44 of file AngleInterval.h.

44  {
47  }
static Angle fromDegrees(double a)
Definition: Angle.h:49

◆ fromRadians()

static AngleInterval lsst::sphgeom::AngleInterval::fromRadians ( double  x,
double  y 
)
inlinestatic

Definition at line 49 of file AngleInterval.h.

49  {
52  }
static Angle fromRadians(double a)
Definition: Angle.h:51

◆ full()

static AngleInterval lsst::sphgeom::AngleInterval::full ( )
inlinestatic

Definition at line 58 of file AngleInterval.h.

◆ getA()

Angle lsst::sphgeom::Interval< AngleInterval , Angle >::getA ( ) const
inlineinherited

getA returns the lower endpoint of this interval.

The return value for empty intervals is arbitrary.

Definition at line 76 of file Interval.h.

76 { return _a; }

◆ getB()

Angle lsst::sphgeom::Interval< AngleInterval , Angle >::getB ( ) const
inlineinherited

getB returns the upper endpoint of this interval.

The return value for empty intervals is arbitrary.

Definition at line 80 of file Interval.h.

80 { return _b; }

◆ getCenter()

Angle lsst::sphgeom::Interval< AngleInterval , Angle >::getCenter ( ) const
inlineinherited

getCenter returns the center of this interval.

It is arbitrary for empty intervals.

Definition at line 89 of file Interval.h.

89 { return 0.5 * (_a + _b); }

◆ getSize()

Angle lsst::sphgeom::Interval< AngleInterval , Angle >::getSize ( ) const
inlineinherited

getSize returns the size (length, width) of this interval.

It is zero for single-point intervals, and NaN or negative for empty intervals.

Definition at line 93 of file Interval.h.

93 { return _b - _a; }

◆ intersects() [1/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::intersects ( Angle  x) const
inlineinherited

intersects returns true if the intersection of this interval and x is non-empty.

Definition at line 130 of file Interval.h.

130 { return _a <= x && x <= _b; }

◆ intersects() [2/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::intersects ( Interval< AngleInterval, Angle > const &  x) const
inlineinherited

intersects returns true if the intersection of this interval and x is non-empty.

Definition at line 132 of file Interval.h.

132  {
133  return !isDisjointFrom(x);
134  }

◆ isDisjointFrom() [1/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::isDisjointFrom ( Angle  x) const
inlineinherited

isDisjointFrom returns true if the intersection of this interval and x is empty.

Definition at line 115 of file Interval.h.

115  {
116  return !intersects(x);
117  }

◆ isDisjointFrom() [2/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::isDisjointFrom ( Interval< AngleInterval, Angle > const &  x) const
inlineinherited

isDisjointFrom returns true if the intersection of this interval and x is empty.

Definition at line 119 of file Interval.h.

119  {
120  if (isEmpty() || x.isEmpty()) {
121  return true;
122  }
123  return _a > x._b || _b < x._a;
124  }

◆ isEmpty()

bool lsst::sphgeom::Interval< AngleInterval , Angle >::isEmpty ( ) const
inlineinherited

isEmpty returns true if this interval does not contain any points.

Definition at line 83 of file Interval.h.

83  {
84  return !(_a <= _b); // returns true when _a and/or _b is NaN
85  }

◆ isWithin() [1/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::isWithin ( Angle  x) const
inlineinherited

isWithin returns true if the intersection of this interval and x is this interval.

Definition at line 140 of file Interval.h.

140  {
141  return (_a == x && _b == x) || isEmpty();
142  }

◆ isWithin() [2/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::isWithin ( Interval< AngleInterval, Angle > const &  x) const
inlineinherited

isWithin returns true if the intersection of this interval and x is this interval.

Definition at line 144 of file Interval.h.

144  {
145  return x.contains(*this);
146  }

◆ operator!=() [1/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::operator!= ( Angle  x) const
inlineinherited

Definition at line 72 of file Interval.h.

72 { return !(*this == x); }

◆ operator!=() [2/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::operator!= ( Interval< AngleInterval, Angle > const &  i) const
inlineinherited

Definition at line 65 of file Interval.h.

65 { return !(*this == i); }

◆ operator==() [1/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::operator== ( Angle  x) const
inlineinherited

A closed interval is equal to a point x if both endpoints equal x.

Definition at line 68 of file Interval.h.

68  {
69  return (_a == x && _b == x) || (x != x && isEmpty());
70  }

◆ operator==() [2/2]

bool lsst::sphgeom::Interval< AngleInterval , Angle >::operator== ( Interval< AngleInterval, Angle > const &  i) const
inlineinherited

Two closed intervals are equal if their endpoints are the same, or both are empty.

Definition at line 61 of file Interval.h.

61  {
62  return (_a == i._a && _b == i._b) || (i.isEmpty() && isEmpty());
63  }

◆ relate() [1/2]

Relationship lsst::sphgeom::Interval< AngleInterval , Angle >::relate ( Angle  x) const
inherited

relate returns a bitset S describing the spatial relationships between this interval and x. For each relation that holds, the bitwise AND of S and the corresponding Relationship will be non-zero.

Definition at line 153 of file Interval.h.

249  {
250  if (isEmpty()) {
251  if (x != x) {
252  return CONTAINS | DISJOINT | WITHIN;
253  }
254  return DISJOINT | WITHIN;
255  }
256  if (x != x) {
257  return CONTAINS | DISJOINT;
258  }
259  if (_a == x && _b == x) {
260  return CONTAINS | WITHIN;
261  }
262  if (intersects(x)) {
263  return CONTAINS;
264  }
265  return DISJOINT;
266 }

◆ relate() [2/2]

Relationship lsst::sphgeom::Interval< AngleInterval , Angle >::relate ( Interval< AngleInterval, Angle > const &  x) const
inherited

relate returns a bitset S describing the spatial relationships between this interval and x. For each relation that holds, the bitwise AND of S and the corresponding Relationship will be non-zero.

Definition at line 154 of file Interval.h.

271 {
272  if (isEmpty()) {
273  if (x.isEmpty()) {
274  return CONTAINS | DISJOINT | WITHIN;
275  }
276  return DISJOINT | WITHIN;
277  }
278  if (x.isEmpty()) {
279  return CONTAINS | DISJOINT;
280  }
281  if (_a == x._a && _b == x._b) {
282  return CONTAINS | WITHIN;
283  }
284  if (_a > x._b || _b < x._a) {
285  return DISJOINT;
286  }
287  if (_a <= x._a && _b >= x._b) {
288  return CONTAINS;
289  }
290  if (x._a <= _a && x._b >= _b) {
291  return WITHIN;
292  }
293  return INTERSECTS;
294 }

The documentation for this class was generated from the following file: