LSSTApplications
19.0.0-11-g2ce9f25+2,20.0.0+1,20.0.0+11,20.0.0+2,20.0.0+3,20.0.0+4,20.0.0+5,20.0.0+8,20.0.0+9,20.0.0-1-g009f3de,20.0.0-1-g10df615+8,20.0.0-1-g253301a+4,20.0.0-1-g32a200e+8,20.0.0-1-g596936a+9,20.0.0-1-g8a53f90+1,20.0.0-1-gc96f8cb+10,20.0.0-1-gd1c87d7+1,20.0.0-15-g34741e2+3,20.0.0-2-g04cfba9+2,20.0.0-2-gec03fae+2,20.0.0-3-g082faa5+1,20.0.0-3-g2fa8bb8+6,20.0.0-3-gbdbfa727+1,20.0.0-4-gde602ef96+3,20.0.0-4-ge48a6ca+4,20.0.0-8-g1acaa36,20.0.0-8-g7eef53f7+5,w.2020.27
LSSTDataManagementBasePackage
|
Go to the documentation of this file.
44 if (r <=
Angle(0.0)) {
111 _enforceInvariants();
197 if (
w.asRadians() <=
PI) {
261 double phi1, phi2, phi3;
262 double c =
cos(0.5 *
w);
274 if (phi1 <= phi3 && phi3 <= phi2) {
279 if (p1.
dot(boxVerts[0]) > p2.
dot(boxVerts[1])) {
288 double cl2 = (p - boxVerts[0]).getSquaredNorm();
289 for (
int i = 1; i < 4; ++i) {
290 cl2 =
std::max(cl2, (p - boxVerts[i]).getSquaredNorm());
311 if (!_lon.
isFull() && 0.5 *
w < r) {
321 return CONTAINS | DISJOINT | WITHIN;
323 return DISJOINT | WITHIN;
325 return CONTAINS | DISJOINT;
329 return CONTAINS | WITHIN;
348 for (
int i = 0; i < 4; ++i) {
350 double d = (verts[i] - c.
getCenter()).getSquaredNorm();
359 }
else if (inside !=
b) {
371 for (
int i = 0; i < 2; ++i) {
373 c.
getCenter(), verts[2 * i + 1], verts[2 * i], norms[i]);
409 for (
int i = 0; i < 2; ++i) {
411 c.
getCenter(), verts[2 * i + 1], verts[2 * i], norms[i]);
460 if (buffer ==
nullptr ||
n != ENCODED_SIZE || *buffer !=
TYPE_CODE) {
471 box->_enforceInvariants();
476 return os <<
"{\"Box\": [" <<
b.getLon() <<
", " <<
b.getLat() <<
"]}";
Scalar getCenter() const
getCenter returns the center of this interval.
double asRadians() const
asRadians returns the value of this angle in units of radians.
NormalizedAngle getCenter() const
getCenter returns the center of this interval.
static NormalizedAngleInterval fromRadians(double a, double b)
bool isFull() const
isFull returns true if this interval contains all normalized angles.
This file declares a class for representing longitude/latitude angle boxes on the unit sphere.
This file declares a class for representing axis-aligned bounding boxes in ℝ³.
double sin(Angle const &a)
static double squaredChordLengthFor(Angle openingAngle)
squaredChordLengthFor computes and returns the squared chord length between points in S² that are sep...
double asRadians() const
asRadians returns the value of this angle in units of radians.
bool isNan() const
isNan returns true if the angle value is NaN.
LonLat represents a spherical coordinate (longitude/latitude angle) pair.
Angle abs(Angle const &a)
bool isFull() const
isFull returns true if this box contains all points on the unit sphere.
Box represents a rectangle in spherical coordinate space that contains its boundary.
This file declares a class for representing elliptical regions on the unit sphere.
double dot(Vector3d const &v) const
dot returns the inner product of this unit vector and v.
Relationship relate(LonLat const &p) const
bool isEmpty() const
isEmpty returns true if this box does not contain any points.
This file contains simple helper functions for encoding and decoding primitive types to/from byte str...
Interval1d represents closed intervals of ℝ.
This file declares a class for representing circular regions on the unit sphere.
Box3d represents a box in ℝ³.
NormalizedAngle getWidth() const
getWidth returns the width in longitude angle of this box.
NormalizedAngleInterval & dilateBy(Angle x)
UnitVector3d is a unit vector in ℝ³ with components stored in double precision.
ConvexPolygon is a closed convex polygon on the unit sphere.
Scalar getA() const
getA returns the lower endpoint of this interval.
Circle getBoundingCircle() const override
getBoundingCircle returns a bounding-circle for this region.
double getArea() const
getArea returns the area of this box in steradians.
static NormalizedAngle halfWidthForCircle(Angle r, Angle lat)
halfWidthForCircle computes the half-width of bounding boxes for circles with radius r and centers at...
Ellipse is an elliptical region on the sphere.
double tan(Angle const &a)
double getSquaredChordLength() const
getSquaredChordLength returns the squared length of chords between the circle center and points on th...
Scalar getB() const
getB returns the upper endpoint of this interval.
bool contains(Scalar x) const
constexpr double MAX_SQUARED_CHORD_LENGTH_ERROR
Angle getMinAngleToCircle(Angle x, Angle c)
getMinAngleToCircle returns the minimum angular separation between a point at latitude x and the poin...
This file declares miscellaneous utility functions.
Box & dilateBy(Angle r)
dilateBy minimally expands this Box to include all points within angular separation r of its boundary...
double getMaxSquaredChordLength(Vector3d const &v, Vector3d const &a, Vector3d const &b, Vector3d const &n)
Let p be the unit vector furthest from v that lies on the plane with normal n in the direction of the...
AngleInterval represents closed intervals of arbitrary angles.
A base class for image defects.
bool contains(LonLat const &x) const
Relationship relate(Region const &r) const override
double decodeDouble(uint8_t const *buffer)
decode extracts an IEEE double from the 8 byte little-endian byte sequence in buffer.
static Box3d aroundUnitSphere()
aroundUnitSphere returns a minimal Box3d containing the unit sphere.
bool contains(NormalizedAngle x) const
NormalizedAngle getA() const
getA returns the first endpoint of this interval.
NormalizedAngle getSize() const
getSize returns the size (length, width) of this interval.
static constexpr uint8_t TYPE_CODE
std::vector< uint8_t > encode() const override
encode serializes this region into an opaque byte string.
Box3d getBoundingBox3d() const override
getBoundingBox3d returns a 3-dimensional bounding-box for this region.
Angle represents an angle in radians.
static UnitVector3d orthogonalTo(Vector3d const &v)
orthogonalTo returns an arbitrary unit vector that is orthogonal to v.
Relationship relate(Region const &r) const override
double getMinSquaredChordLength(Vector3d const &v, Vector3d const &a, Vector3d const &b, Vector3d const &n)
Let p be the unit vector closest to v that lies on the plane with normal n in the direction of the cr...
std::ostream & operator<<(std::ostream &, Angle const &)
UnitVector3d const & getCenter() const
getCenter returns the center of this circle as a unit vector.
Circle is a circular region on the unit sphere that contains its boundary.
NormalizedAngle is an angle that lies in the range [0, 2π), with one exception - a NormalizedAngle ca...
constexpr double MAX_ASIN_ERROR
double cos(Angle const &a)
static AngleInterval fromRadians(double x, double y)
NormalizedAngle getLon() const
static std::unique_ptr< Box > decode(std::vector< uint8_t > const &s)
Relationship invert(Relationship r)
Given the relationship between two sets A and B (i.e.
This file declares a class for representing convex polygons with great circle edges on the unit spher...
NormalizedAngle getB() const
getB returns the second endpoint of this interval.
void encodeDouble(double item, std::vector< uint8_t > &buffer)
encode appends an IEEE double in little-endian byte order to the end of buffer.