LSST Applications g0f08755f38+9c285cab97,g1635faa6d4+13f3999e92,g1653933729+a8ce1bb630,g1a0ca8cf93+bf6eb00ceb,g28da252d5a+0829b12dee,g29321ee8c0+5700dc9eac,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+fde0dd39b6,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g80478fca09+55a9465950,g82479be7b0+d730eedb7d,g858d7b2824+9c285cab97,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+2a84bb7594,gacf8899fa4+c69c5206e8,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+9634bc57db,gcf0d15dbbd+4b7d09cae4,gda3e153d99+9c285cab97,gda6a2b7d83+4b7d09cae4,gdaeeff99f8+1711a396fd,ge2409df99d+5e831397f4,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+41c94011de,gf3fb38a9a8+8f07a9901b,gfb92a5be7c+9c285cab97,w.2024.46
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
lsst::sphgeom::LonLat Class Reference

LonLat represents a spherical coordinate (longitude/latitude angle) pair. More...

#include <LonLat.h>

Public Member Functions

 LonLat ()
 This constructor creates the point with longitude and latitude angle equal to zero.
 
 LonLat (NormalizedAngle lon, Angle lat)
 This constructor creates the point with the given longitude and latitude angles.
 
 LonLat (Vector3d const &v)
 This constructor creates the point on the unit sphere corresponding to the direction of v.
 
bool operator== (LonLat const &p) const
 
bool operator!= (LonLat const &p) const
 
NormalizedAngle getLon () const
 
Angle getLat () const
 

Static Public Member Functions

static LonLat fromDegrees (double lon, double lat)
 
static LonLat fromRadians (double lon, double lat)
 
static Angle latitudeOf (Vector3d const &v)
 latitudeOf returns the latitude of the point on the unit sphere corresponding to the direction of v.
 
static NormalizedAngle longitudeOf (Vector3d const &v)
 longitudeOf returns the longitude of the point on the unit sphere corresponding to the direction of v.
 

Detailed Description

LonLat represents a spherical coordinate (longitude/latitude angle) pair.

This class supports conversion from a Vector3d. All methods that accept a Vector3d parameter shall convert from vector to longitude/latitude coordinates according to the following conventions:

Definition at line 55 of file LonLat.h.

Constructor & Destructor Documentation

◆ LonLat() [1/3]

lsst::sphgeom::LonLat::LonLat ( )
inline

This constructor creates the point with longitude and latitude angle equal to zero.

Definition at line 77 of file LonLat.h.

77{}

◆ LonLat() [2/3]

lsst::sphgeom::LonLat::LonLat ( NormalizedAngle lon,
Angle lat )

This constructor creates the point with the given longitude and latitude angles.

Definition at line 69 of file LonLat.cc.

69 : _lon(lon), _lat(lat) {
70 if (std::fabs(_lat.asRadians()) > 0.5 * PI) {
71 throw std::invalid_argument("invalid latitude angle");
72 }
73 _enforceInvariants();
74}
double asRadians() const
asRadians returns the value of this angle in units of radians.
Definition Angle.h:92
T fabs(T... args)
constexpr double PI
Definition constants.h:43

◆ LonLat() [3/3]

lsst::sphgeom::LonLat::LonLat ( Vector3d const & v)

This constructor creates the point on the unit sphere corresponding to the direction of v.

Definition at line 76 of file LonLat.cc.

76 : _lon(longitudeOf(v)), _lat(latitudeOf(v)) {
77 _enforceInvariants();
78}
static Angle latitudeOf(Vector3d const &v)
latitudeOf returns the latitude of the point on the unit sphere corresponding to the direction of v.
Definition LonLat.cc:44
static NormalizedAngle longitudeOf(Vector3d const &v)
longitudeOf returns the longitude of the point on the unit sphere corresponding to the direction of v...
Definition LonLat.cc:56

Member Function Documentation

◆ fromDegrees()

static LonLat lsst::sphgeom::LonLat::fromDegrees ( double lon,
double lat )
inlinestatic

Definition at line 57 of file LonLat.h.

57 {
60 }
static Angle fromDegrees(double a)
Definition Angle.h:56
LonLat()
This constructor creates the point with longitude and latitude angle equal to zero.
Definition LonLat.h:77
static NormalizedAngle fromDegrees(double a)

◆ fromRadians()

static LonLat lsst::sphgeom::LonLat::fromRadians ( double lon,
double lat )
inlinestatic

Definition at line 62 of file LonLat.h.

62 {
65 }
static Angle fromRadians(double a)
Definition Angle.h:58
static NormalizedAngle fromRadians(double a)

◆ getLat()

Angle lsst::sphgeom::LonLat::getLat ( ) const
inline

Definition at line 97 of file LonLat.h.

97{ return _lat; }

◆ getLon()

NormalizedAngle lsst::sphgeom::LonLat::getLon ( ) const
inline

Definition at line 95 of file LonLat.h.

95{ return _lon; }

◆ latitudeOf()

Angle lsst::sphgeom::LonLat::latitudeOf ( Vector3d const & v)
static

latitudeOf returns the latitude of the point on the unit sphere corresponding to the direction of v.

Definition at line 44 of file LonLat.cc.

44 {
45 double d2 = v(0) * v(0) + v(1) * v(1);
46 double lat = 0.0;
47 if (v(2) != 0.0) {
48 lat = std::atan2(v(2), sqrt(d2));
49 if (std::fabs(lat) > 0.5 * PI) {
50 lat = ::copysign(0.5 * PI, lat);
51 }
52 }
53 return Angle(lat);
54}
T atan2(T... args)

◆ longitudeOf()

NormalizedAngle lsst::sphgeom::LonLat::longitudeOf ( Vector3d const & v)
static

longitudeOf returns the longitude of the point on the unit sphere corresponding to the direction of v.

Definition at line 56 of file LonLat.cc.

56 {
57 double d2 = v(0) * v(0) + v(1) * v(1);
58 double lon = 0.0;
59 if (d2 != 0.0) {
60 lon = std::atan2(v(1), v(0));
61 if (lon < 0.0) {
62 lon += 2*PI;
63 }
64 }
65 return NormalizedAngle(lon);
66}

◆ operator!=()

bool lsst::sphgeom::LonLat::operator!= ( LonLat const & p) const
inline

Definition at line 91 of file LonLat.h.

91 {
92 return _lon != p._lon || _lat != p._lat;
93 }

◆ operator==()

bool lsst::sphgeom::LonLat::operator== ( LonLat const & p) const
inline

Definition at line 87 of file LonLat.h.

87 {
88 return _lon == p._lon && _lat == p._lat;
89 }

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