LSST Applications g070148d5b3+33e5256705,g0d53e28543+25c8b88941,g0da5cf3356+2dd1178308,g1081da9e2a+62d12e78cb,g17e5ecfddb+7e422d6136,g1c76d35bf8+ede3a706f7,g295839609d+225697d880,g2e2c1a68ba+cc1f6f037e,g2ffcdf413f+853cd4dcde,g38293774b4+62d12e78cb,g3b44f30a73+d953f1ac34,g48ccf36440+885b902d19,g4b2f1765b6+7dedbde6d2,g5320a0a9f6+0c5d6105b6,g56b687f8c9+ede3a706f7,g5c4744a4d9+ef6ac23297,g5ffd174ac0+0c5d6105b6,g6075d09f38+66af417445,g667d525e37+2ced63db88,g670421136f+2ced63db88,g71f27ac40c+2ced63db88,g774830318a+463cbe8d1f,g7876bc68e5+1d137996f1,g7985c39107+62d12e78cb,g7fdac2220c+0fd8241c05,g96f01af41f+368e6903a7,g9ca82378b8+2ced63db88,g9d27549199+ef6ac23297,gabe93b2c52+e3573e3735,gb065e2a02a+3dfbe639da,gbc3249ced9+0c5d6105b6,gbec6a3398f+0c5d6105b6,gc9534b9d65+35b9f25267,gd01420fc67+0c5d6105b6,geee7ff78d7+a14128c129,gf63283c776+ede3a706f7,gfed783d017+0c5d6105b6,w.2022.47
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. 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 (double marginSize)
 shrinks the frame (if marginSize>0), enlarges it (if marginSize<0). More...
 
void cutMargin (double marginX, 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 (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 ( 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}
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), (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 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: