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
|
Point in an unspecified spherical coordinate system. More...
#include <SpherePoint.h>
Public Member Functions | |
SpherePoint (Angle const &longitude, Angle const &latitude) | |
Construct a SpherePoint from a longitude and latitude. More... | |
SpherePoint (double longitude, double latitude, AngleUnit units) | |
Construct a SpherePoint from double longitude and latitude. More... | |
SpherePoint (sphgeom::Vector3d const &vector) | |
Construct a SpherePoint from a vector representing a direction. More... | |
SpherePoint (sphgeom::LonLat const &lonLat) noexcept | |
Construct a SpherePoint from a sphgeom::LonLat. More... | |
SpherePoint () noexcept | |
Construct a SpherePoint with "nan" for longitude and latitude. More... | |
SpherePoint (SpherePoint const &other) noexcept | |
Create a copy of a SpherePoint. More... | |
SpherePoint (SpherePoint &&other) noexcept | |
Create a copy of a SpherePoint. More... | |
~SpherePoint () noexcept | |
SpherePoint & | operator= (SpherePoint const &other) noexcept |
Overwrite this object with the value of another SpherePoint. More... | |
SpherePoint & | operator= (SpherePoint &&other) noexcept |
Overwrite this object with the value of another SpherePoint. More... | |
operator sphgeom::LonLat () const noexcept | |
Make SpherePoint implicitly convertible to LonLat. More... | |
Angle | getLongitude () const noexcept |
The longitude of this point. More... | |
Angle | getRa () const noexcept |
Synonym for getLongitude. More... | |
Angle | getLatitude () const noexcept |
The latitude of this point. More... | |
Angle | getDec () const noexcept |
Synonym for getLatitude. More... | |
Point2D | getPosition (AngleUnit unit) const noexcept |
Return longitude, latitude as a Point2D object. More... | |
sphgeom::UnitVector3d | getVector () const noexcept |
A unit vector representation of this point. More... | |
Angle | operator[] (size_t index) const |
Longitude and latitude by index. More... | |
bool | atPole () const noexcept |
true if this point is either coordinate pole. More... | |
bool | isFinite () const noexcept |
true if this point is a well-defined position. More... | |
bool | operator== (SpherePoint const &other) const noexcept |
true if two points have the same longitude and latitude. More... | |
bool | operator!= (SpherePoint const &other) const noexcept |
false if two points represent the same position. More... | |
std::size_t | hash_value () const noexcept |
Return a hash of this object. More... | |
Angle | bearingTo (SpherePoint const &other) const |
Orientation at this point of the great circle arc to another point. More... | |
Angle | separation (SpherePoint const &other) const noexcept |
Angular distance between two points. More... | |
SpherePoint | rotated (SpherePoint const &axis, Angle const &amount) const noexcept |
Return a point rotated from this one around an axis. More... | |
SpherePoint | offset (Angle const &bearing, Angle const &amount) const |
Return a point offset from this one along a great circle. More... | |
std::pair< Angle, Angle > | getTangentPlaneOffset (SpherePoint const &other) const |
Get the offset from a tangent plane centered at this point to another point. More... | |
Related Functions | |
(Note that these are not member functions.) | |
std::ostream & | operator<< (std::ostream &os, SpherePoint const &point) |
Print the value of a point to a stream. More... | |
Point in an unspecified spherical coordinate system.
This class represents a point on a sphere in the mathematical rather than the astronomical sense. It does not refer to any astronomical reference frame, nor does it have any concept of (radial) distance.
Points can be represented either as spherical coordinates or as a unit vector. The adopted convention for converting between these two systems is that (0, 0) corresponds to <1, 0, 0>, that (π/2, 0) corresponds to <0, 1, 0>, and that (0, π/2) corresponds to <0, 0, 1>.
To keep usage simple, SpherePoint does not support modification of existing values; transformations of SpherePoints should be expressed as a new object. To support cases where a SpherePoint must be updated in-place, SpherePoint supports assignment to an existing object. One example is in containers of SpherePoints; no STL container has an atomic element-replacement method, so complicated constructions would need to be used if you couldn't overwrite an existing element.
Definition at line 57 of file SpherePoint.h.
Construct a SpherePoint from a longitude and latitude.
longitude | The longitude of the point. +/-inf is treated as nan (because longitude is wrapped to a standard range and infinity cannot be wrapped) |
latitude | The latitude of the point. Must be in the interval [-π/2, π/2] radians. |
pex::exceptions::InvalidParameterError | Thrown if latitude is out of range. |
Definition at line 68 of file SpherePoint.cc.
lsst::geom::SpherePoint::SpherePoint | ( | double | longitude, |
double | latitude, | ||
AngleUnit | units | ||
) |
Construct a SpherePoint from double longitude and latitude.
longitude | The longitude of the point. +/-inf is treated as nan (because longitude is wrapped to a standard range and infinity cannot be wrapped) |
latitude | The latitude of the point. Must be in the interval [-π/2, π/2] radians. |
units | The units of longitude and latitude |
pex::exceptions::InvalidParameterError | Thrown if latitude is out of range. |
Definition at line 65 of file SpherePoint.cc.
|
explicit |
Construct a SpherePoint from a vector representing a direction.
vector | A position whose direction will be stored as a SpherePoint. Must not be the zero vector. Need not be normalized, and the norm will not affect the value of the point. |
pex::exceptions::InvalidParameterError | Thrown if vector is the zero vector. |
Definition at line 76 of file SpherePoint.cc.
|
noexcept |
Construct a SpherePoint from a sphgeom::LonLat.
lonLat | The lonLat |
Definition at line 94 of file SpherePoint.cc.
|
noexcept |
Construct a SpherePoint with "nan" for longitude and latitude.
Definition at line 108 of file SpherePoint.cc.
|
defaultnoexcept |
Create a copy of a SpherePoint.
other | The point to copy. |
|
defaultnoexcept |
Create a copy of a SpherePoint.
As SpherePoint(SpherePoint const&), except that other
may be left in an unspecified but valid state.
|
defaultnoexcept |
|
inlinenoexcept |
true
if this point is either coordinate pole.
true
if this point is at the north or south pole, false
otherwiseDefinition at line 237 of file SpherePoint.h.
Angle lsst::geom::SpherePoint::bearingTo | ( | SpherePoint const & | other | ) | const |
Orientation at this point of the great circle arc to another point.
The orientation is measured in a plane tangent to the sphere at this point, with 0 degrees along the direction of increasing longitude and 90 degrees along the direction of increasing latitude. Thus for any point except the pole, the arc is due east at 0 degrees and due north at 90 degrees. To understand the behavior at the poles it may help to imagine the point has been shifted slightly by decreasing the absolute value of its latitude.
If the points are on opposite sides of the sphere then the returned bearing may be any value.
other | the point to which to measure the bearing |
A
and B
, A.bearingTo(B)
will in general not be 180 degrees away from B.bearingTo(A)
. Definition at line 159 of file SpherePoint.cc.
|
inlinenoexcept |
|
inlinenoexcept |
The latitude of this point.
Definition at line 190 of file SpherePoint.h.
|
inlinenoexcept |
The longitude of this point.
Definition at line 178 of file SpherePoint.h.
Return longitude, latitude as a Point2D object.
[in] | unit | Units of returned data. |
Definition at line 129 of file SpherePoint.cc.
|
inlinenoexcept |
std::pair< geom::Angle, geom::Angle > lsst::geom::SpherePoint::getTangentPlaneOffset | ( | SpherePoint const & | other | ) | const |
Get the offset from a tangent plane centered at this point to another point.
This is suitable only for small angles.
[in] | other | Coordinate to which to compute offset |
Definition at line 214 of file SpherePoint.cc.
|
noexcept |
A unit vector representation of this point.
Definition at line 124 of file SpherePoint.cc.
|
noexcept |
Return a hash of this object.
Definition at line 154 of file SpherePoint.cc.
|
noexcept |
true
if this point is a well-defined position.
true
if getLongitude(), getLatitude(), and getVector() return finite floating-point values; false
if any return NaN or infinity.Definition at line 144 of file SpherePoint.cc.
SpherePoint lsst::geom::SpherePoint::offset | ( | Angle const & | bearing, |
Angle const & | amount | ||
) | const |
Return a point offset from this one along a great circle.
For any point A
, any angle bearing
and any non-negative angle amount
, if B
= A.offset(bearing, amount)then
A.bearingTo(B) = amountand
A.separationTo(B) = amount. Negative values of
amountare supported in the obvious manner:
A.offset(bearing, delta) = A.offset(bearing + 180*degrees, -delta)`
bearing | the direction in which to move this point, following the conventions described in bearingTo. |
amount | the distance by which to move along the great circle defined by bearing |
Definition at line 185 of file SpherePoint.cc.
|
noexcept |
Make SpherePoint implicitly convertible to LonLat.
Definition at line 118 of file SpherePoint.cc.
|
noexcept |
false
if two points represent the same position.
This operator shall always return the logical negation of operator==(); see its documentation for a detailed specification.
Definition at line 152 of file SpherePoint.cc.
|
defaultnoexcept |
Overwrite this object with the value of another SpherePoint.
As operator=(SpherePoint const&), except that other
may be left in an unspecified but valid state.
|
defaultnoexcept |
Overwrite this object with the value of another SpherePoint.
This is the only method that can alter the state of a SpherePoint after its construction, and is provided to allow in-place replacement of SpherePoints where swapping is not possible.
other | The object with which to overwrite this one. |
|
noexcept |
true
if two points have the same longitude and latitude.
other | the point to test for equality |
other
, false otherwiseNaN
shall not compare equal to any point, including themselves. This may break algorithms that assume object equality is reflexive; use isFinite() to filter objects if necessary. Definition at line 146 of file SpherePoint.cc.
Longitude and latitude by index.
index | the index of the spherical coordinate to return. Must be either 0 or 1. |
index
= 0, or getLatitude() if index
= 1pex::exceptions::OutOfRangeError | Thrown if index is neither 0 nor 1. |
Definition at line 133 of file SpherePoint.cc.
|
noexcept |
Return a point rotated from this one around an axis.
axis | a point defining the north pole of the rotation axis. |
amount | the amount of rotation, where positive values represent right-handed rotations around axis . |
Definition at line 178 of file SpherePoint.cc.
|
noexcept |
Angular distance between two points.
other | the point to which to measure the separation |
Definition at line 173 of file SpherePoint.cc.
|
related |
Print the value of a point to a stream.
The exact details of the string representation are unspecified and subject to change, but the following may be regarded as typical: "(10.543250, +32.830583)"
.
os | the stream to which to print point |
point | the point to print to the stream |
os
pex::exceptions::std::ostream::failure | Thrown if an I/O state flag was set that was registered with os.exceptions() . See the documentation of std::ostream for more details. |
Definition at line 253 of file SpherePoint.cc.