LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
LSST Data Management Base Package
Loading...
Searching...
No Matches
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.
 
 Frame (double xMin, double yMin, double xMax, double yMax)
 this one is dangerous: you may swap the 2 middle arguments.
 
 Frame (const Point &lowerLeft, const Point &upperRight)
 typical use: Frame(Point(xmin,ymin),Point(xmax,ymax))
 
double getWidth () const
 size along x axis
 
double getHeight () const
 size along y axis
 
Point getCenter () const
 Center of the frame.
 
Frame operator* (const Frame &right) const
 intersection of Frame's.
 
Frameoperator*= (const Frame &right)
 intersection of Frame's
 
Frame operator+ (const Frame &right) const
 union of Frames
 
Frameoperator+= (const Frame &right)
 union of Frames
 
void cutMargin (double marginSize)
 shrinks the frame (if marginSize>0), enlarges it (if marginSize<0).
 
void cutMargin (double marginX, double marginY)
 shrinks the frame (if marginSize>0), enlarges it (if marginSize<0).
 
bool operator== (const Frame &right) const
 necessary for comparisons (!= is defined from this one implicitely)
 
bool operator!= (const Frame &right) const
 comparison
 
Frame rescale (double factor) const
 rescale it. The center does not move.
 
double getArea () const
 
bool inFrame (double x, double y) const
 inside?
 
bool inFrame (const Point &point) const
 same as above
 
double minDistToEdges (const Point &point) const
 distance to closest boundary.
 
void print (std::ostream &out) const
 

Public Attributes

double xMin {}
 coordinate of boundary.
 
double xMax {}
 
double yMin {}
 
double yMax {}
 

Friends

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

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 ( 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(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 ( double marginX,
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}
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), (xMax,yMax): (" << std::setprecision(12) << xMin << ", " << yMin << "), (" << xMax
126 << ", " << yMax << ")";
127}
T setprecision(T... args)

◆ rescale()

Frame lsst::jointcal::Frame::rescale ( 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 Symbol 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.

41{}, xMax{}, yMin{}, yMax{};

◆ xMin

double lsst::jointcal::Frame::xMin {}

coordinate of boundary.

Definition at line 41 of file Frame.h.

41{}, xMax{}, yMin{}, yMax{};

◆ yMax

double lsst::jointcal::Frame::yMax {}

Definition at line 41 of file Frame.h.

41{}, xMax{}, yMin{}, yMax{};

◆ yMin

double lsst::jointcal::Frame::yMin {}

Definition at line 41 of file Frame.h.

41{}, xMax{}, yMin{}, yMax{};

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