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 | Public Attributes | Friends | List of all members
lsst::jointcal::Frame Class Reference

rectangle with sides parallel to axes. More...

#include <Frame.h>

Public Member Functions

 Frame ()
 Default constructor. More...
 
 Frame (double xMin, double yMin, double xMax, double yMax)
 this one is dangerous: you may swap the 2 middle arguments. More...
 
 Frame (const Point &lowerLeft, const Point &upperRight)
 typical use: Frame(Point(xmin,ymin),Point(xmax,ymax)) More...
 
double getWidth () const
 size along x axis More...
 
double getHeight () const
 size along y axis More...
 
Point getCenter () const
 Center of the frame. More...
 
Frame operator* (const Frame &right) const
 intersection of Frame's. More...
 
Frameoperator*= (const Frame &right)
 intersection of Frame's More...
 
Frame operator+ (const Frame &right) const
 union of Frames More...
 
Frameoperator+= (const Frame &right)
 union of Frames More...
 
void cutMargin (const double marginSize)
 shrinks the frame (if marginSize>0), enlarges it (if marginSize<0). More...
 
void cutMargin (const double marginX, const double marginY)
 shrinks the frame (if marginSize>0), enlarges it (if marginSize<0). More...
 
bool operator== (const Frame &right) const
 necessary for comparisons (!= is defined from this one implicitely) More...
 
bool operator!= (const Frame &right) const
 comparison More...
 
Frame rescale (const double factor) const
 rescale it. The center does not move. More...
 
double getArea () const
 
bool inFrame (double x, double y) const
 inside? More...
 
bool inFrame (const Point &point) const
 same as above More...
 
double minDistToEdges (const Point &point) const
 distance to closest boundary. More...
 
void print (std::ostream &out) const
 

Public Attributes

double xMin
 coordinate of boundary. More...
 
double xMax
 
double yMin
 
double yMax
 

Friends

std::ostreamoperator<< (std::ostream &stream, const Frame &right)
 allows More...
 

Detailed Description

rectangle with sides parallel to axes.

when Frame's are used to define subparts of images, xMin and xMax refer to the first and last pixels in the subimage

Definition at line 38 of file Frame.h.

Constructor & Destructor Documentation

◆ Frame() [1/3]

lsst::jointcal::Frame::Frame ( )

Default constructor.

Definition at line 46 of file Frame.cc.

46 { xMin = xMax = yMin = yMax = 0; }
double xMin
coordinate of boundary.
Definition: Frame.h:41

◆ Frame() [2/3]

lsst::jointcal::Frame::Frame ( double  xMin,
double  yMin,
double  xMax,
double  yMax 
)

this one is dangerous: you may swap the 2 middle arguments.

Prefer next one

Definition at line 39 of file Frame.cc.

39  {
40  xMin = min(xmin, xmax);
41  xMax = max(xmin, xmax);
42  yMin = min(ymin, ymax);
43  yMax = max(ymin, ymax);
44 }
int min
int max
int xmax
Definition: SpanSet.cc:48
int xmin
Definition: SpanSet.cc:48

◆ Frame() [3/3]

lsst::jointcal::Frame::Frame ( const Point lowerLeft,
const Point upperRight 
)

typical use: Frame(Point(xmin,ymin),Point(xmax,ymax))

Definition at line 35 of file Frame.cc.

35  {
36  *this = Frame(lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y);
37 }
Frame()
Default constructor.
Definition: Frame.cc:46

Member Function Documentation

◆ cutMargin() [1/2]

void lsst::jointcal::Frame::cutMargin ( const double  marginSize)

shrinks the frame (if marginSize>0), enlarges it (if marginSize<0).

Definition at line 108 of file Frame.cc.

108 { cutMargin(marginSize, marginSize); }
void cutMargin(const double marginSize)
shrinks the frame (if marginSize>0), enlarges it (if marginSize<0).
Definition: Frame.cc:108

◆ cutMargin() [2/2]

void lsst::jointcal::Frame::cutMargin ( const double  marginX,
const double  marginY 
)

shrinks the frame (if marginSize>0), enlarges it (if marginSize<0).

Definition at line 101 of file Frame.cc.

101  {
102  xMin += marginX;
103  yMin += marginY;
104  xMax -= marginX;
105  yMax -= marginY;
106 }

◆ getArea()

double lsst::jointcal::Frame::getArea ( ) const

Definition at line 118 of file Frame.cc.

118 { return fabs((xMax - xMin) * (yMax - yMin)); }
T fabs(T... args)

◆ getCenter()

Point lsst::jointcal::Frame::getCenter ( ) const
inline

Center of the frame.

Definition at line 60 of file Frame.h.

60 { return Point((xMax + xMin) * 0.5, (yMax + yMin) * 0.5); }

◆ getHeight()

double lsst::jointcal::Frame::getHeight ( ) const
inline

size along y axis

Definition at line 57 of file Frame.h.

57 { return yMax - yMin; }

◆ getWidth()

double lsst::jointcal::Frame::getWidth ( ) const
inline

size along x axis

Definition at line 54 of file Frame.h.

54 { return xMax - xMin; }

◆ inFrame() [1/2]

bool lsst::jointcal::Frame::inFrame ( const Point point) const
inline

same as above

Definition at line 96 of file Frame.h.

96 { return inFrame(point.x, point.y); }
bool inFrame(double x, double y) const
inside?
Definition: Frame.cc:120

◆ inFrame() [2/2]

bool lsst::jointcal::Frame::inFrame ( double  x,
double  y 
) const

inside?

Definition at line 120 of file Frame.cc.

120  {
121  return ((x <= xMax) && (y <= yMax) && (x >= xMin) && (y >= yMin));
122 }
double x
int y
Definition: SpanSet.cc:48

◆ minDistToEdges()

double lsst::jointcal::Frame::minDistToEdges ( const Point point) const

distance to closest boundary.

Definition at line 49 of file Frame.cc.

49  {
50  return min(min(point.x - xMin, xMax - point.x) /* minx */,
51  min(point.y - yMin, yMax - point.y) /* miny */);
52 }

◆ operator!=()

bool lsst::jointcal::Frame::operator!= ( const Frame right) const
inline

comparison

Definition at line 84 of file Frame.h.

84 { return !(*this == right); }
T right(T... args)

◆ operator*()

Frame lsst::jointcal::Frame::operator* ( const Frame right) const

intersection of Frame's.

Definition at line 54 of file Frame.cc.

54  {
55  Frame result = *this;
56  result *= right;
57  return result;
58 }
py::object result
Definition: _schema.cc:429

◆ operator*=()

Frame & lsst::jointcal::Frame::operator*= ( const Frame right)

intersection of Frame's

Definition at line 60 of file Frame.cc.

60  {
61  Frame rightCopy = right;
62  // make sure that coordinates are properly ordered
63  order();
64  rightCopy.order();
65  xMin = max(xMin, rightCopy.xMin);
66  xMax = min(xMax, right.xMax);
67  yMin = max(yMin, right.yMin);
68  yMax = min(yMax, right.yMax);
69  // check for an actual overlap. Why was this check added?
70  if (xMin > xMax || yMin > yMax) *this = Frame();
71  return *this;
72 }

◆ operator+()

Frame lsst::jointcal::Frame::operator+ ( const Frame right) const

union of Frames

Definition at line 74 of file Frame.cc.

74  {
75  Frame result = *this;
76  result += right;
77  return result;
78 }

◆ operator+=()

Frame & lsst::jointcal::Frame::operator+= ( const Frame right)

union of Frames

Definition at line 80 of file Frame.cc.

80  {
81  Frame rightCopy = right;
82  // make sure that coordinates are properly ordered
83  order();
84  rightCopy.order();
85  xMin = min(xMin, rightCopy.xMin);
86  xMax = max(xMax, right.xMax);
87  yMin = min(yMin, right.yMin);
88  yMax = max(yMax, right.yMax);
89  return *this;
90 }

◆ operator==()

bool lsst::jointcal::Frame::operator== ( const Frame right) const

necessary for comparisons (!= is defined from this one implicitely)

Definition at line 97 of file Frame.cc.

97  {
98  return ((xMin == right.xMin) && (xMax == right.xMax) && (yMin == right.yMin) && (yMax == right.yMax));
99 }

◆ print()

void lsst::jointcal::Frame::print ( std::ostream out) const

Definition at line 124 of file Frame.cc.

124  {
125  stream << "xmin ymin " << xMin << ' ' << yMin << " xmax ymax " << xMax << ' ' << yMax << endl;
126 }
T endl(T... args)

◆ rescale()

Frame lsst::jointcal::Frame::rescale ( const double  factor) const

rescale it. The center does not move.

Definition at line 110 of file Frame.cc.

110  {
111  double hxsize = fabs(factor * 0.5 * (xMax - xMin));
112  double xcenter = 0.5 * (xMax + xMin);
113  double hysize = fabs(factor * 0.5 * (yMax - yMin));
114  double ycenter = 0.5 * (yMax + yMin);
115  return Frame(xcenter - hxsize, ycenter - hysize, xcenter + hxsize, ycenter + hysize);
116 }

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream stream,
const Frame right 
)
friend

allows

std::cout << frame; 

.

Definition at line 104 of file Frame.h.

104  {
105  right.print(stream);
106  return stream;
107  };

Member Data Documentation

◆ xMax

double lsst::jointcal::Frame::xMax

Definition at line 41 of file Frame.h.

◆ xMin

double lsst::jointcal::Frame::xMin

coordinate of boundary.

Definition at line 41 of file Frame.h.

◆ yMax

double lsst::jointcal::Frame::yMax

Definition at line 41 of file Frame.h.

◆ yMin

double lsst::jointcal::Frame::yMin

Definition at line 41 of file Frame.h.


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