LSST Applications  21.0.0-1-g8760c09+64c1bc5aa5,21.0.0-1-ga51b5d4+9915f4c1f0,21.0.0-117-gc411b24e+f84ddc296e,21.0.0-14-g3bd782b+16b33694c2,21.0.0-18-gdfc0191+ecbc221302,21.0.0-2-g103fe59+df8d4d8d23,21.0.0-2-g45278ab+64c1bc5aa5,21.0.0-2-g5242d73+2292060af2,21.0.0-2-g7f82c8f+6f93c05343,21.0.0-2-gde069b7+4f46bdaea8,21.0.0-2-gfc62afb+2292060af2,21.0.0-20-g1e553c2+458274d3ec,21.0.0-20-g3b2d1f0+6435842460,21.0.0-21-g51ee50f4+981cd1fc80,21.0.0-21-gc8894c7+b39e0bca51,21.0.0-27-gcbf119a+9cedfa2013,21.0.0-3-g1b65d06+6a55181de0,21.0.0-3-g357aad2+056b41e3ab,21.0.0-3-g4a4ce7f+2292060af2,21.0.0-3-g4be5c26+2292060af2,21.0.0-3-ge02ed75+b39e0bca51,21.0.0-3-gf9d8b05+6f93c05343,21.0.0-31-gbc33d95d+283f9bd92d,21.0.0-4-g7dab645+6975c8242f,21.0.0-46-g27369044f+532d44eec1,21.0.0-5-g5f8d297+1eaad2dc21,21.0.0-5-g8c1d971+7e5b4c34a6,21.0.0-5-gcc89fd6+b18c5f6b76,21.0.0-5-gd00fb1e+78c370a642,21.0.0-6-g1930a60+b18c5f6b76,21.0.0-6-gc675373+2292060af2,21.0.0-7-g0503b2e+18535a8d22,21.0.0-7-g7aa11f2+b39e0bca51,21.0.0-7-g997b569+8c09b75fa7,21.0.0-7-gdf92d54+64c1bc5aa5,21.0.0-9-g7058be7+2d726afa20,master-ga86695c5c8+b39e0bca51,master-gcc5351303a+df8d4d8d23,w.2021.26
LSST Data Management Base Package
Box.h
Go to the documentation of this file.
1 /*
2  * Developed for the LSST Data Management System.
3  * This product includes software developed by the LSST Project
4  * (https://www.lsst.org).
5  * See the COPYRIGHT file at the top-level directory of this distribution
6  * for details of code ownership.
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20  */
21 
22 #ifndef LSST_GEOM_BOX_H
23 #define LSST_GEOM_BOX_H
24 
25 #include <vector>
26 
27 #include "boost/format.hpp"
28 #include "ndarray.h"
29 
30 #include "lsst/geom/Point.h"
31 #include "lsst/geom/Extent.h"
32 #include "lsst/geom/Interval.h"
33 
34 namespace lsst {
35 namespace geom {
36 
37 class Box2D;
38 
55 class Box2I final {
56 public:
57  typedef Point2I Point;
58  typedef Extent2I Extent;
59  typedef int Element;
60 
62 
64 
66  Box2I() noexcept : _minimum(0), _dimensions(0) {}
67 
76  Box2I(Point2I const& minimum, Point2I const& maximum, bool invert = true);
77 
90  Box2I(Point2I const& corner, Extent2I const& dimensions, bool invert = true);
91 
98  Box2I(Interval const & x, Interval const & y) :
99  Box2I(Point(x.getMin(), y.getMin()), Point(x.getMax(), y.getMax()), false)
100  {}
101 
119  explicit Box2I(Box2D const& other, EdgeHandlingEnum edgeHandling = EXPAND);
120 
122  Box2I(Box2I const&) noexcept = default;
123  Box2I(Box2I&&) noexcept = default;
124  ~Box2I() noexcept = default;
125 
139  static Box2I makeCenteredBox(Point2D const& center, Extent const& size);
140 
141  void swap(Box2I& other) noexcept {
142  _minimum.swap(other._minimum);
143  _dimensions.swap(other._dimensions);
144  }
145 
147  Box2I& operator=(Box2I const&) noexcept = default;
148  Box2I& operator=(Box2I&&) noexcept = default;
149 
156  Point2I const getMin() const noexcept { return _minimum; }
157  int getMinX() const noexcept { return _minimum.getX(); }
158  int getMinY() const noexcept { return _minimum.getY(); }
159 
160  Point2I const getMax() const noexcept { return _minimum + _dimensions - Extent2I(1); }
161  int getMaxX() const noexcept { return _minimum.getX() + _dimensions.getX() - 1; }
162  int getMaxY() const noexcept { return _minimum.getY() + _dimensions.getY() - 1; }
164 
171  Point2I const getBegin() const noexcept { return _minimum; }
172  int getBeginX() const noexcept { return _minimum.getX(); }
173  int getBeginY() const noexcept { return _minimum.getY(); }
174 
175  Point2I const getEnd() const noexcept { return _minimum + _dimensions; }
176  int getEndX() const noexcept { return _minimum.getX() + _dimensions.getX(); }
177  int getEndY() const noexcept { return _minimum.getY() + _dimensions.getY(); }
179 
186  Extent2I const getDimensions() const noexcept { return _dimensions; }
187  int getWidth() const noexcept { return _dimensions.getX(); }
188  int getHeight() const noexcept { return _dimensions.getY(); }
189  int getArea() const { return getWidth() * getHeight(); }
191 
198  Point2D const getCenter() const noexcept;
199  double getCenterX() const noexcept { return this->getCenter().getX(); }
200  double getCenterY() const noexcept { return this->getCenter().getY(); }
202 
204 
208 
210  ndarray::View<boost::fusion::vector2<ndarray::index::Range, ndarray::index::Range> > getSlices() const;
211 
213  bool isEmpty() const noexcept { return _dimensions.getX() == 0 && _dimensions.getY() == 0; }
214 
216  bool contains(Point2I const& point) const noexcept;
218  bool contains(Element x, Element y) const noexcept { return contains(Point2I(x, y)); }
220 
226  bool contains(Box2I const& other) const noexcept;
227 
229 
234  bool overlaps(Box2I const& other) const noexcept;
235  bool intersects(Box2I const& other) const noexcept { return overlaps(other); }
237 
241  bool isDisjointFrom(Box2I const & other) const noexcept;
242 
249  void grow(int buffer) { grow(Extent2I(buffer)); }
250 
257  void grow(Extent2I const& buffer);
258 
260  void shift(Extent2I const& offset);
261 
263  void flipLR(int xExtent);
264 
266  void flipTB(int yExtent);
267 
269  void include(Point2I const& point);
270 
272  void include(Box2I const& other);
273 
280  void clip(Box2I const& other) noexcept;
281 
294  Box2I dilatedBy(Extent const & buffer) const;
295  Box2I dilatedBy(Element buffer) const {
296  return dilatedBy(Extent(buffer, buffer));
297  }
299 
312  Box2I erodedBy(Extent const & buffer) const { return dilatedBy(-buffer); }
313  Box2I erodedBy(Element buffer) const { return dilatedBy(-buffer); }
315 
322  Box2I shiftedBy(Extent const & offset) const;
323 
330 
337 
339 
347  Box2I expandedTo(Point const & other) const;
348  Box2I expandedTo(Box2I const & other) const;
350 
358  Box2I clippedTo(Box2I const & other) const noexcept;
359 
365  bool operator==(Box2I const& other) const noexcept;
366 
372  bool operator!=(Box2I const& other) const noexcept;
373 
375  std::size_t hash_value() const noexcept;
376 
383  std::vector<Point2I> getCorners() const;
384 
385  std::string toString() const {
386  return (boost::format("Box2I(%s,%s)") % _minimum.toString() % _dimensions.toString()).str();
387  }
388 
389 private:
390  Point2I _minimum;
391  Extent2I _dimensions;
392 };
393 
413 class Box2D final {
414 public:
415  typedef Point2D Point;
416  typedef Extent2D Extent;
417  typedef double Element;
418 
420 
425  static double const EPSILON;
426 
428  static double const INVALID;
429 
431  Box2D() noexcept;
432 
443  Box2D(Point2D const& minimum, Point2D const& maximum, bool invert = true) noexcept;
444 
455  Box2D(Point2D const& corner, Extent2D const& dimensions, bool invert = true) noexcept;
456 
463  Box2D(Interval const & x, Interval const & y) :
464  Box2D(Point(x.getMin(), y.getMin()), Point(x.getMax(), y.getMax()), false)
465  {}
466 
476  explicit Box2D(Box2I const& other) noexcept;
477 
479  Box2D(Box2D const&) noexcept = default;
480  Box2D(Box2D&&) noexcept = default;
481 
482  ~Box2D() noexcept = default;
483 
495  // It's hard to guarantee postconditions (especially size) with non-finite inputs
496  static Box2D makeCenteredBox(Point2D const& center, Extent const& size) noexcept;
497 
498  void swap(Box2D& other) noexcept {
499  _minimum.swap(other._minimum);
500  _maximum.swap(other._maximum);
501  }
502 
504  Box2D& operator=(Box2D const&) noexcept = default;
505  Box2D& operator=(Box2D&&) noexcept = default;
506 
513  Point2D const getMin() const noexcept { return _minimum; }
514  double getMinX() const noexcept { return _minimum.getX(); }
515  double getMinY() const noexcept { return _minimum.getY(); }
516 
517  Point2D const getMax() const noexcept { return _maximum; }
518  double getMaxX() const noexcept { return _maximum.getX(); }
519  double getMaxY() const noexcept { return _maximum.getY(); }
521 
528  Extent2D const getDimensions() const noexcept { return isEmpty() ? Extent2D(0.0) : _maximum - _minimum; }
529  double getWidth() const noexcept { return isEmpty() ? 0 : _maximum.getX() - _minimum.getX(); }
530  double getHeight() const noexcept { return isEmpty() ? 0 : _maximum.getY() - _minimum.getY(); }
531  double getArea() const noexcept {
532  Extent2D dim(getDimensions());
533  return dim.getX() * dim.getY();
534  }
536 
538  Interval getX() const { return Interval::fromMinMax(getMinX(), getMaxX()); }
542 
549  Point2D const getCenter() const noexcept {
550  return Point2D((_minimum.asEigen() + _maximum.asEigen()) * 0.5);
551  }
552  double getCenterX() const noexcept { return (_minimum.getX() + _maximum.getX()) * 0.5; }
553  double getCenterY() const noexcept { return (_minimum.getY() + _maximum.getY()) * 0.5; }
555 
557  bool isEmpty() const noexcept { return _minimum.getX() != _minimum.getX(); }
558 
560  bool contains(Point2D const& point) const noexcept;
562  bool contains(Element x, Element y) const noexcept { return contains(Point2D(x, y)); }
564 
570  bool contains(Box2D const& other) const;
571 
573 
578  bool overlaps(Box2D const& other) const noexcept;
579  bool intersects(Box2D const& other) const noexcept { return overlaps(other); }
581 
582 
586  bool isDisjointFrom(Box2D const & other) const noexcept;
587 
594  void grow(double buffer) { grow(Extent2D(buffer)); }
595 
602  void grow(Extent2D const& buffer);
603 
605  void shift(Extent2D const& offset);
606 
608  void flipLR(float xExtent);
609 
611  void flipTB(float yExtent);
612 
620  void include(Point2D const& point) noexcept;
621 
623  void include(Box2D const& other) noexcept;
624 
631  void clip(Box2D const& other) noexcept;
632 
634 
649  Box2D dilatedBy(Extent const & buffer) const;
650  Box2D dilatedBy(Element buffer) const {
651  return dilatedBy(Extent(buffer, buffer));
652  }
654 
656 
671  Box2D erodedBy(Extent const & buffer) const { return dilatedBy(-buffer); }
672  Box2D erodedBy(Element buffer) const { return dilatedBy(-buffer); }
674 
685  Box2D shiftedBy(Extent const & offset) const;
686 
696 
706 
717  Box2D expandedTo(Point const & other) const;
718 
725  Box2D expandedTo(Box2D const & other) const;
726 
734  Box2D clippedTo(Box2D const & other) const;
735 
741  bool operator==(Box2D const& other) const noexcept;
742 
748  bool operator!=(Box2D const& other) const noexcept;
749 
751  std::size_t hash_value() const noexcept;
752 
759  std::vector<Point2D> getCorners() const;
760 
761  std::string toString() const {
762  return (boost::format("Box2D(%s,%s)") % _minimum.toString() % _maximum.toString()).str();
763  }
764 
765 private:
766  void _tweakMax(int n) noexcept {
767  if (_maximum[n] < 0.0) {
768  _maximum[n] *= (1.0 - EPSILON);
769  } else if (_maximum[n] > 0.0) {
770  _maximum[n] *= (1.0 + EPSILON);
771  } else {
772  _maximum[n] = EPSILON;
773  }
774  }
775  Point2D _minimum;
776  Point2D _maximum;
777 };
778 
779 typedef Box2D BoxD;
780 typedef Box2I BoxI;
781 
783 
785 
786 } // namespace geom
787 } // namespace lsst
788 
789 namespace std {
790 template <>
794  size_t operator()(argument_type const& x) const noexcept { return x.hash_value(); }
795 };
796 
797 template <>
801  size_t operator()(argument_type const& x) const noexcept { return x.hash_value(); }
802 };
803 } // namespace std
804 
805 #endif
double x
afw::table::PointKey< int > dimensions
Definition: GaussianPsf.cc:49
std::ostream * os
Definition: Schema.cc:557
int y
Definition: SpanSet.cc:49
A floating-point coordinate rectangle geometry.
Definition: Box.h:413
double getMaxY() const noexcept
Definition: Box.h:519
Box2D(Box2D const &) noexcept=default
Standard copy constructor.
void swap(Box2D &other) noexcept
Definition: Box.h:498
Point2D const getMax() const noexcept
Definition: Box.h:517
double getMaxX() const noexcept
Definition: Box.h:518
Box2D dilatedBy(Extent const &buffer) const
Increase the size of the box by the given amount(s) on all sides (returning a new object).
Definition: Box.cc:438
bool operator==(Box2D const &other) const noexcept
Compare two boxes for equality.
Definition: Box.cc:476
double Element
Definition: Box.h:417
Extent2D const getDimensions() const noexcept
1-d interval accessors
Definition: Box.h:528
Box2D dilatedBy(Element buffer) const
Return true if the box contains no points.
Definition: Box.h:650
bool operator!=(Box2D const &other) const noexcept
Compare two boxes for equality.
Definition: Box.cc:481
void shift(Extent2D const &offset)
Shift the position of the box by the given offset.
Definition: Box.cc:350
double getMinY() const noexcept
Definition: Box.h:515
void clip(Box2D const &other) noexcept
Shrink this to ensure that other.contains(*this).
Definition: Box.cc:416
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: Box.cc:486
double getWidth() const noexcept
1-d interval accessors
Definition: Box.h:529
static Box2D makeCenteredBox(Point2D const &center, Extent const &size) noexcept
Create a box centered on a particular point.
Definition: Box.cc:316
Box2D erodedBy(Extent const &buffer) const
Decrease the size of the box by the given amount(s) on all sides (returning a new object).
Definition: Box.h:671
Box2D() noexcept
Construct an empty box.
Definition: Box.cc:274
Point2D const getCenter() const noexcept
Return true if the box contains no points.
Definition: Box.h:549
Box2D & operator=(Box2D &&) noexcept=default
bool isEmpty() const noexcept
Return true if the box contains no points.
Definition: Box.h:557
Point2D const getMin() const noexcept
Definition: Box.h:513
double getMinX() const noexcept
Definition: Box.h:514
bool isDisjointFrom(Box2D const &other) const noexcept
Return true if there are no points in both this and other.
Definition: Box.cc:339
Interval getY() const
1-d interval accessors
Definition: Box.h:540
void grow(double buffer)
Increase the size of the box by the given buffer amount in all directions.
Definition: Box.h:594
Box2D reflectedAboutY(Element y) const
Reflect the box about a horizontal line (returning a new object).
Definition: Box.cc:453
void flipLR(float xExtent)
Flip a bounding box about the y-axis given a parent box of extent (xExtent).
Definition: Box.cc:356
Extent2D Extent
Definition: Box.h:416
void flipTB(float yExtent)
Flip a bounding box about the x-axis given a parent box of extent (yExtent).
Definition: Box.cc:368
Interval getX() const
1-d interval accessors
Definition: Box.h:539
IntervalD Interval
Definition: Box.h:419
Box2D reflectedAboutX(Element x) const
Reflect the box about a vertical line (returning a new object).
Definition: Box.cc:448
double getCenterX() const noexcept
Return true if the box contains no points.
Definition: Box.h:552
void include(Point2D const &point) noexcept
Expand this to ensure that this->contains(point).
Definition: Box.cc:380
bool contains(Point2D const &point) const noexcept
Return true if the box contains the point.
Definition: Box.cc:322
Box2D & operator=(Box2D const &) noexcept=default
Standard assignment operator.
Box2D erodedBy(Element buffer) const
Return true if the box contains no points.
Definition: Box.h:672
bool overlaps(Box2D const &other) const noexcept
Return true if any points in other are also in this.
Definition: Box.cc:332
bool contains(Element x, Element y) const noexcept
Return true if the box contains no points.
Definition: Box.h:562
bool intersects(Box2D const &other) const noexcept
Return true if the box contains no points.
Definition: Box.h:579
double getArea() const noexcept
1-d interval accessors
Definition: Box.h:531
Box2D clippedTo(Box2D const &other) const
Shrink a box to ensure that it is contained by other (returning a new object).
Definition: Box.cc:471
static double const EPSILON
Value the maximum coordinate is multiplied by to increase it by the smallest possible amount.
Definition: Box.h:425
Point2D Point
Definition: Box.h:415
Box2D expandedTo(Point const &other) const
Expand a box to ensure that contains(other) is true (returning a new object).
Definition: Box.cc:458
std::vector< Point2D > getCorners() const
Get the corner points.
Definition: Box.cc:496
Box2D shiftedBy(Extent const &offset) const
Shift the position of the box by the given offset (returning a new object).
Definition: Box.cc:443
double getHeight() const noexcept
1-d interval accessors
Definition: Box.h:530
std::string toString() const
Return true if the box contains no points.
Definition: Box.h:761
static double const INVALID
Value used to specify undefined coordinate values.
Definition: Box.h:428
double getCenterY() const noexcept
Return true if the box contains no points.
Definition: Box.h:553
Box2D(Box2D &&) noexcept=default
An integer coordinate rectangle.
Definition: Box.h:55
int getBeginX() const noexcept
Definition: Box.h:172
void clip(Box2I const &other) noexcept
Shrink this to ensure that other.contains(*this).
Definition: Box.cc:189
Extent2I Extent
Definition: Box.h:58
int getMinY() const noexcept
Definition: Box.h:158
bool isDisjointFrom(Box2I const &other) const noexcept
Return true if there are no points in both this and other.
Definition: Box.cc:126
bool overlaps(Box2I const &other) const noexcept
Return true if any points in other are also in this.
Definition: Box.cc:122
void include(Point2I const &point)
Expand this to ensure that this->contains(point).
Definition: Box.cc:152
int getHeight() const noexcept
Definition: Box.h:188
Box2I(Interval const &x, Interval const &y)
Construct a box from a pair of intervals.
Definition: Box.h:98
Box2I expandedTo(Point const &other) const
Expand the box to ensure that contains(other) is true (returning a new object).
Definition: Box.cc:233
Point2I const getMin() const noexcept
Definition: Box.h:156
Box2I & operator=(Box2I &&) noexcept=default
bool isEmpty() const noexcept
Return true if the box contains no points.
Definition: Box.h:213
Point2I const getMax() const noexcept
Definition: Box.h:160
Box2I erodedBy(Element buffer) const
1-d interval accessors
Definition: Box.h:313
int getEndY() const noexcept
Definition: Box.h:177
int Element
Definition: Box.h:59
Box2I clippedTo(Box2I const &other) const noexcept
Shrink an interval to ensure that it is contained by other (returning a new object).
Definition: Box.cc:243
void grow(int buffer)
Increase the size of the box by the given buffer amount in all directions.
Definition: Box.h:249
Box2I erodedBy(Extent const &buffer) const
Decrease the size of the box by the given amount(s) on all sides (returning a new object).
Definition: Box.h:312
Point2I const getBegin() const noexcept
Definition: Box.h:171
Box2I dilatedBy(Extent const &buffer) const
Increase the size of the box by the given amount(s) on all sides (returning a new object).
Definition: Box.cc:213
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: Box.cc:256
int getMinX() const noexcept
Definition: Box.h:157
static Box2I makeCenteredBox(Point2D const &center, Extent const &size)
Create a box centered as closely as possible on a particular point.
Definition: Box.cc:97
Point2I Point
Definition: Box.h:57
int getWidth() const noexcept
Definition: Box.h:187
int getArea() const
Definition: Box.h:189
int getBeginY() const noexcept
Definition: Box.h:173
int getMaxX() const noexcept
Definition: Box.h:161
Interval getX() const
1-d interval accessors
Definition: Box.h:205
std::vector< Point2I > getCorners() const
Get the corner points.
Definition: Box.cc:261
Box2I reflectedAboutX(Element x) const
Reflect the box about a vertical line (returning a new object).
Definition: Box.cc:223
bool contains(Point2I const &point) const noexcept
Return true if the box contains the point.
Definition: Box.cc:114
void shift(Extent2I const &offset)
Shift the position of the box by the given offset.
Definition: Box.cc:134
bool contains(Element x, Element y) const noexcept
1-d interval accessors
Definition: Box.h:218
std::string toString() const
1-d interval accessors
Definition: Box.h:385
void flipTB(int yExtent)
Flip a bounding box about the x-axis given a parent box of extent (yExtent).
Definition: Box.cc:145
ndarray::View< boost::fusion::vector2< ndarray::index::Range, ndarray::index::Range > > getSlices() const
Return slices to extract the box's region from an ndarray::Array.
Definition: Box.cc:109
void swap(Box2I &other) noexcept
Definition: Box.h:141
int getMaxY() const noexcept
Definition: Box.h:162
double getCenterY() const noexcept
1-d interval accessors
Definition: Box.h:200
Box2I(Box2I const &) noexcept=default
Standard copy constructor.
Box2I reflectedAboutY(Element y) const
Reflect the box about a horizontal line (returning a new object).
Definition: Box.cc:228
Box2I(Box2I &&) noexcept=default
bool operator!=(Box2I const &other) const noexcept
Compare two boxes for equality.
Definition: Box.cc:252
Point2I const getEnd() const noexcept
Definition: Box.h:175
bool operator==(Box2I const &other) const noexcept
Compare two boxes for equality.
Definition: Box.cc:248
Interval getY() const
1-d interval accessors
Definition: Box.h:206
Extent2I const getDimensions() const noexcept
Definition: Box.h:186
Box2I() noexcept
Construct an empty box.
Definition: Box.h:66
double getCenterX() const noexcept
1-d interval accessors
Definition: Box.h:199
Box2I dilatedBy(Element buffer) const
1-d interval accessors
Definition: Box.h:295
Box2I & operator=(Box2I const &) noexcept=default
Standard assignment operator.
bool intersects(Box2I const &other) const noexcept
1-d interval accessors
Definition: Box.h:235
Box2I shiftedBy(Extent const &offset) const
Shift the position of the box by the given offset (returning a new object).
Definition: Box.cc:218
Point2D const getCenter() const noexcept
1-d interval accessors
Definition: Box.cc:93
void flipLR(int xExtent)
Flip a bounding box about the y-axis given a parent box of extent (xExtent).
Definition: Box.cc:138
int getEndX() const noexcept
Definition: Box.h:176
EigenVector const & asEigen() const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
Return a fixed-size Eigen representation of the coordinate object.
std::string toString() const
Cast this object to an Extent of the same numeric type and dimensionality.
Definition: Extent.h:179
void swap(Extent &other) noexcept
Definition: Extent.h:245
A floating-point coordinate rectangle geometry.
Definition: Interval.h:413
static IntervalD fromMinMax(Element min, Element max)
Construct an interval from its lower and upper bounds.
Definition: Interval.cc:226
A 1-d integer coordinate range.
Definition: Interval.h:50
static IntervalI fromMinSize(Element min, Element size)
Construct an interval from its lower bound and size.
Definition: Interval.cc:57
std::string toString() const
Cast this object to an Extent of the same numeric type and dimensionality.
Definition: Point.h:143
void swap(Point &other) noexcept
Definition: Point.h:202
class[[deprecated("Removed with no replacement (but see lsst::afw::image::TransmissionCurve). Will be " "removed after v22.")]] FilterProperty final
Describe the properties of a Filter (e.g.
Definition: Filter.h:53
Extent< double, 2 > Extent2D
Definition: Extent.h:400
std::ostream & operator<<(std::ostream &os, lsst::geom::AffineTransform const &transform)
Box2D BoxD
Definition: Box.h:779
Point< double, 2 > Point2D
Definition: Point.h:324
Extent< int, 2 > Extent2I
Definition: Extent.h:397
Box2I BoxI
Definition: Box.h:780
Point< int, 2 > Point2I
Definition: Point.h:321
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174
Relationship invert(Relationship r)
Given the relationship between two sets A and B (i.e.
Definition: Relationship.h:55
A base class for image defects.
STL namespace.
size_t operator()(argument_type const &x) const noexcept
Definition: Box.h:801
size_t operator()(argument_type const &x) const noexcept
Definition: Box.h:794