LSSTApplications
18.1.0
LSSTDataManagementBasePackage
|
Namespaces | |
detail | |
python | |
version | |
Classes | |
class | Angle |
Angle represents an angle in radians. More... | |
class | AngleInterval |
AngleInterval represents closed intervals of arbitrary angles. More... | |
class | BigInteger |
BigInteger is an arbitrary precision signed integer class. More... | |
class | Box |
Box represents a rectangle in spherical coordinate space that contains its boundary. More... | |
class | Box3d |
Box3d represents a box in ℝ³. More... | |
class | Chunker |
Chunker subdivides the unit sphere into longitude-latitude boxes. More... | |
class | Circle |
Circle is a circular region on the unit sphere that contains its boundary. More... | |
class | ConvexPolygon |
ConvexPolygon is a closed convex polygon on the unit sphere. More... | |
class | Ellipse |
Ellipse is an elliptical region on the sphere. More... | |
class | HtmPixelization |
HtmPixelization provides HTM indexing of points and regions. More... | |
class | Interval |
Interval represents a closed interval of the real numbers by its upper and lower bounds. More... | |
class | Interval1d |
Interval1d represents closed intervals of ℝ. More... | |
class | LonLat |
LonLat represents a spherical coordinate (longitude/latitude angle) pair. More... | |
class | Matrix3d |
A 3x3 matrix with real entries stored in double precision. More... | |
class | Mq3cPixelization |
Mq3cPixelization provides modified Q3C indexing of points and regions. More... | |
class | NormalizedAngle |
NormalizedAngle is an angle that lies in the range [0, 2π), with one exception - a NormalizedAngle can be NaN. More... | |
class | NormalizedAngleInterval |
NormalizedAngleInterval represents closed intervals of normalized angles, i.e. More... | |
class | Pixelization |
A Pixelization (or partitioning) of the sphere is a mapping between points on the sphere and a set of pixels (a.k.a. More... | |
class | Q3cPixelization |
Q3cPixelization provides Q3C indexing of points and regions. More... | |
class | RangeSet |
A RangeSet is a set of unsigned 64 bit integers. More... | |
class | Region |
Region is a minimal interface for 2-dimensional regions on the unit sphere. More... | |
struct | SubChunks |
SubChunks represents a set of sub-chunks of a particular chunk. More... | |
class | UnitVector3d |
UnitVector3d is a unit vector in ℝ³ with components stored in double precision. More... | |
class | Vector3d |
Vector3d is a vector in ℝ³ with components stored in double precision. More... | |
Typedefs | |
using | Relationship = std::bitset< 3 > |
Relationship describes how two sets are related. More... | |
Functions | |
Angle | operator* (double a, Angle const &b) |
std::ostream & | operator<< (std::ostream &, Angle const &) |
double | sin (Angle const &a) |
double | cos (Angle const &a) |
double | tan (Angle const &a) |
Angle | abs (Angle const &a) |
std::ostream & | operator<< (std::ostream &, AngleInterval const &) |
std::ostream & | operator<< (std::ostream &, Box const &) |
std::ostream & | operator<< (std::ostream &, Box3d const &) |
std::ostream & | operator<< (std::ostream &, Circle const &) |
void | encodeDouble (double item, std::vector< uint8_t > &buffer) |
encode appends an IEEE double in little-endian byte order to the end of buffer. More... | |
double | decodeDouble (uint8_t const *buffer) |
decode extracts an IEEE double from the 8 byte little-endian byte sequence in buffer. More... | |
std::ostream & | operator<< (std::ostream &, ConvexPolygon const &) |
uint64_t | mortonIndex (uint32_t x, uint32_t y) |
mortonIndex interleaves the bits of x and y. More... | |
std::tuple< uint32_t, uint32_t > | mortonIndexInverse (uint64_t z) |
mortonIndexInverse separates the even and odd bits of z. More... | |
uint64_t | mortonToHilbert (uint64_t z, int m) |
mortonToHilbert converts the 2m-bit Morton index z to the corresponding Hilbert index. More... | |
uint64_t | hilbertToMorton (uint64_t h, int m) |
hilbertToMorton converts the 2m-bit Hilbert index h to the corresponding Morton index. More... | |
uint64_t | hilbertIndex (uint32_t x, uint32_t y, int m) |
hilbertIndex returns the index of (x, y) in a 2-D Hilbert curve. More... | |
std::tuple< uint32_t, uint32_t > | hilbertIndexInverse (uint64_t h, int m) |
hilbertIndexInverse returns the point (x, y) with Hilbert index h, where x and y are m bit integers. More... | |
std::ostream & | operator<< (std::ostream &, Ellipse const &) |
std::ostream & | operator<< (std::ostream &, Interval1d const &) |
std::ostream & | operator<< (std::ostream &, LonLat const &) |
std::ostream & | operator<< (std::ostream &, Matrix3d const &) |
NormalizedAngle const & | abs (NormalizedAngle const &a) |
std::ostream & | operator<< (std::ostream &, NormalizedAngleInterval const &) |
int | orientationExact (Vector3d const &a, Vector3d const &b, Vector3d const &c) |
orientationExact computes and returns the orientations of 3 vectors a, b and c, which need not be normalized but are assumed to have finite components. More... | |
int | orientation (UnitVector3d const &a, UnitVector3d const &b, UnitVector3d const &c) |
orientation computes and returns the orientations of 3 unit vectors a, b and c. More... | |
int | orientationX (UnitVector3d const &b, UnitVector3d const &c) |
orientationX(b, c) is equivalent to orientation(UnitVector3d::X(), b, c) . More... | |
int | orientationY (UnitVector3d const &b, UnitVector3d const &c) |
orientationY(b, c) is equivalent to orientation(UnitVector3d::Y(), b, c) . More... | |
int | orientationZ (UnitVector3d const &b, UnitVector3d const &c) |
orientationZ(b, c) is equivalent to orientation(UnitVector3d::Z(), b, c) . More... | |
void | swap (RangeSet &a, RangeSet &b) |
std::ostream & | operator<< (std::ostream &, RangeSet const &) |
Relationship | invert (Relationship r) |
Given the relationship between two sets A and B (i.e. More... | |
std::ostream & | operator<< (std::ostream &, UnitVector3d const &) |
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 cross product of a and b. More... | |
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 cross product of a and b. More... | |
Angle | getMinAngleToCircle (Angle x, Angle c) |
getMinAngleToCircle returns the minimum angular separation between a point at latitude x and the points on the circle of constant latitude c. More... | |
Angle | getMaxAngleToCircle (Angle x, Angle c) |
getMaxAngleToCircle returns the maximum angular separation between a point at latitude x and the points on the circle of constant latitude c. More... | |
Vector3d | getWeightedCentroid (UnitVector3d const &v0, UnitVector3d const &v1, UnitVector3d const &v2) |
getWeightedCentroid returns the center of mass of the given spherical triangle (assuming a uniform mass distribution over the triangle surface), weighted by the triangle area. More... | |
Vector3d | operator* (double s, Vector3d const &v) |
std::ostream & | operator<< (std::ostream &, Vector3d const &) |
uint8_t | log2 (uint64_t x) |
uint8_t | log2 (uint32_t x) |
Variables | |
constexpr double | PI = 3.1415926535897932384626433832795 |
constexpr double | ONE_OVER_PI = 0.318309886183790671537767526745 |
constexpr double | RAD_PER_DEG = 0.0174532925199432957692369076849 |
constexpr double | DEG_PER_RAD = 57.2957795130823208767981548141 |
constexpr double | MAX_ASIN_ERROR = 1.5e-8 |
constexpr double | MAX_SQUARED_CHORD_LENGTH_ERROR = 2.5e-15 |
constexpr double | EPSILON = 1.1102230246251565e-16 |
using lsst::sphgeom::Relationship = typedef std::bitset<3> |
Relationship
describes how two sets are related.
Definition at line 35 of file Relationship.h.
|
inline |
Definition at line 150 of file NormalizedAngle.h.
|
inline |
|
inline |
|
inline |
getMaxAngleToCircle
returns the maximum angular separation between a point at latitude x and the points on the circle of constant latitude c.
Definition at line 68 of file utils.h.
double lsst::sphgeom::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 cross product of a and b.
If p is in the interior of the great circle segment from a to b, then this helper function returns the squared chord length between p and v. Otherwise it returns 0 - the minimum squared chord length between any pair of points on the sphere.
Definition at line 58 of file utils.cc.
double lsst::sphgeom::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 cross product of a and b.
If p is in the interior of the great circle segment from a to b, then this function returns the squared chord length between p and v. Otherwise it returns 4 - the maximum squared chord length between any pair of points on the unit sphere.
Definition at line 36 of file utils.cc.
Vector3d lsst::sphgeom::getWeightedCentroid | ( | UnitVector3d const & | v0, |
UnitVector3d const & | v1, | ||
UnitVector3d const & | v2 | ||
) |
getWeightedCentroid
returns the center of mass of the given spherical triangle (assuming a uniform mass distribution over the triangle surface), weighted by the triangle area.
|
inline |
hilbertIndex
returns the index of (x, y) in a 2-D Hilbert curve.
Only the m least significant bits of x and y are used. Computing the Hilbert index of a point has been measured to take 4 to 15 times as long as computing its Morton index on an Intel Core i7-3820QM CPU. With Xcode 7.3 and -O3, latency is ~19ns per call at a CPU frequency of 3.5 GHz.
Definition at line 349 of file curve.h.
|
inline |
hilbertIndexInverse
returns the point (x, y) with Hilbert index h, where x and y are m bit integers.
Definition at line 361 of file curve.h.
|
inline |
|
inline |
Given the relationship between two sets A and B (i.e.
the output of A.relate(B)
), invert
returns the relationship between B and A (B.relate(A)
).
Definition at line 55 of file Relationship.h.
|
inline |
log2
returns the index of the most significant 1 bit in x. If x is 0, the return value is 0.
A beautiful algorithm to find this index is presented in:
Using de Bruijn Sequences to Index a 1 in a Computer Word C. E. Leiserson, H. Prokop, and K. H. Randall. http://supertech.csail.mit.edu/papers/debruijn.pdf
Definition at line 98 of file curve.h.
|
inline |
log2
returns the index of the most significant 1 bit in x. If x is 0, the return value is 0.
A beautiful algorithm to find this index is presented in:
Using de Bruijn Sequences to Index a 1 in a Computer Word C. E. Leiserson, H. Prokop, and K. H. Randall. http://supertech.csail.mit.edu/papers/debruijn.pdf
Definition at line 125 of file curve.h.
|
inline |
mortonIndex
interleaves the bits of x and y.
The 32 even bits of the return value will be the bits of x, and the 32 odd bits those of y. This is the z-value of (x,y) defined by the Morton order function. See https://en.wikipedia.org/wiki/Z-order_curve for more information.
Definition at line 148 of file curve.h.
|
inline |
mortonIndexInverse
separates the even and odd bits of z.
The 32 even bits of z are returned in the first element of the result tuple, and the 32 odd bits in the second. This is the inverse of mortonIndex().
Definition at line 195 of file curve.h.
|
inline |
Definition at line 165 of file Vector3d.h.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
Interval1d const & | i | ||
) |
Definition at line 35 of file Interval1d.cc.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
AngleInterval const & | i | ||
) |
Definition at line 34 of file AngleInterval.cc.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
LonLat const & | p | ||
) |
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
Angle const & | a | ||
) |
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
Vector3d const & | v | ||
) |
Definition at line 133 of file Vector3d.cc.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
ConvexPolygon const & | p | ||
) |
Definition at line 382 of file ConvexPolygon.cc.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
Matrix3d const & | m | ||
) |
Definition at line 35 of file Matrix3d.cc.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
UnitVector3d const & | v | ||
) |
Definition at line 73 of file UnitVector3d.cc.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
Circle const & | c | ||
) |
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
NormalizedAngleInterval const & | i | ||
) |
Definition at line 284 of file NormalizedAngleInterval.cc.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
Ellipse const & | e | ||
) |
Definition at line 388 of file Ellipse.cc.
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
Box3d const & | b | ||
) |
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
Box const & | b | ||
) |
std::ostream & lsst::sphgeom::operator<< | ( | std::ostream & | os, |
RangeSet const & | s | ||
) |
Definition at line 616 of file RangeSet.cc.
int lsst::sphgeom::orientation | ( | UnitVector3d const & | a, |
UnitVector3d const & | b, | ||
UnitVector3d const & | c | ||
) |
orientation
computes and returns the orientations of 3 unit vectors a, b and c.
The return value is +1 if the vectors are in counter-clockwise orientation, 0 if they are coplanar, colinear or identical, and -1 if they are in clockwise orientation.
This is equivalent to computing the sign of the scalar triple product a · (b x c), which is the sign of the determinant of the 3x3 matrix with a, b and c as columns/rows.
The implementation proceeds by first computing a double precision approximation, and then falling back to arbitrary precision arithmetic when necessary. Consequently, the result is exact.
Definition at line 135 of file orientation.cc.
orientationExact
computes and returns the orientations of 3 vectors a, b and c, which need not be normalized but are assumed to have finite components.
The return value is +1 if the vectors a, b, and c are in counter-clockwise orientation, 0 if they are coplanar, colinear, or identical, and -1 if they are in clockwise orientation. The implementation uses arbitrary precision arithmetic to avoid floating point rounding error, underflow and overflow.
Definition at line 76 of file orientation.cc.
int lsst::sphgeom::orientationX | ( | UnitVector3d const & | b, |
UnitVector3d const & | c | ||
) |
orientationX(b, c)
is equivalent to orientation(UnitVector3d::X(), b, c)
.
Definition at line 227 of file orientation.cc.
int lsst::sphgeom::orientationY | ( | UnitVector3d const & | b, |
UnitVector3d const & | c | ||
) |
orientationY(b, c)
is equivalent to orientation(UnitVector3d::Y(), b, c)
.
Definition at line 232 of file orientation.cc.
int lsst::sphgeom::orientationZ | ( | UnitVector3d const & | b, |
UnitVector3d const & | c | ||
) |
orientationZ(b, c)
is equivalent to orientation(UnitVector3d::Z(), b, c)
.
Definition at line 237 of file orientation.cc.
|
inline |
Definition at line 608 of file RangeSet.h.
|
inline |
constexpr double lsst::sphgeom::DEG_PER_RAD = 57.2957795130823208767981548141 |
Definition at line 39 of file constants.h.
constexpr double lsst::sphgeom::EPSILON = 1.1102230246251565e-16 |
Definition at line 54 of file constants.h.
constexpr double lsst::sphgeom::MAX_ASIN_ERROR = 1.5e-8 |
Definition at line 45 of file constants.h.
constexpr double lsst::sphgeom::MAX_SQUARED_CHORD_LENGTH_ERROR = 2.5e-15 |
Definition at line 50 of file constants.h.
constexpr double lsst::sphgeom::ONE_OVER_PI = 0.318309886183790671537767526745 |
Definition at line 37 of file constants.h.
constexpr double lsst::sphgeom::PI = 3.1415926535897932384626433832795 |
Definition at line 36 of file constants.h.
constexpr double lsst::sphgeom::RAD_PER_DEG = 0.0174532925199432957692369076849 |
Definition at line 38 of file constants.h.