LSST Applications g063fba187b+cac8b7c890,g0f08755f38+6aee506743,g1653933729+a8ce1bb630,g168dd56ebc+a8ce1bb630,g1a2382251a+b4475c5878,g1dcb35cd9c+8f9bc1652e,g20f6ffc8e0+6aee506743,g217e2c1bcf+73dee94bd0,g28da252d5a+1f19c529b9,g2bbee38e9b+3f2625acfc,g2bc492864f+3f2625acfc,g3156d2b45e+6e55a43351,g32e5bea42b+1bb94961c2,g347aa1857d+3f2625acfc,g35bb328faa+a8ce1bb630,g3a166c0a6a+3f2625acfc,g3e281a1b8c+c5dd892a6c,g3e8969e208+a8ce1bb630,g414038480c+5927e1bc1e,g41af890bb2+8a9e676b2a,g7af13505b9+809c143d88,g80478fca09+6ef8b1810f,g82479be7b0+f568feb641,g858d7b2824+6aee506743,g89c8672015+f4add4ffd5,g9125e01d80+a8ce1bb630,ga5288a1d22+2903d499ea,gb58c049af0+d64f4d3760,gc28159a63d+3f2625acfc,gcab2d0539d+b12535109e,gcf0d15dbbd+46a3f46ba9,gda6a2b7d83+46a3f46ba9,gdaeeff99f8+1711a396fd,ge79ae78c31+3f2625acfc,gef2f8181fd+0a71e47438,gf0baf85859+c1f95f4921,gfa517265be+6aee506743,gfa999e8aa5+17cd334064,w.2024.51
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Related Symbols | List of all members
lsst::geom::SpherePoint Class Referencefinal

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.
 
 SpherePoint (double longitude, double latitude, AngleUnit units)
 Construct a SpherePoint from double longitude and latitude.
 
 SpherePoint (sphgeom::Vector3d const &vector)
 Construct a SpherePoint from a vector representing a direction.
 
 SpherePoint (sphgeom::LonLat const &lonLat) noexcept
 Construct a SpherePoint from a sphgeom::LonLat.
 
 SpherePoint () noexcept
 Construct a SpherePoint with "nan" for longitude and latitude.
 
 SpherePoint (SpherePoint const &other) noexcept
 Create a copy of a SpherePoint.
 
 SpherePoint (SpherePoint &&other) noexcept
 Create a copy of a SpherePoint.
 
 ~SpherePoint () noexcept
 
SpherePointoperator= (SpherePoint const &other) noexcept
 Overwrite this object with the value of another SpherePoint.
 
SpherePointoperator= (SpherePoint &&other) noexcept
 Overwrite this object with the value of another SpherePoint.
 
 operator sphgeom::LonLat () const noexcept
 Make SpherePoint implicitly convertible to LonLat.
 
Angle getLongitude () const noexcept
 The longitude of this point.
 
Angle getRa () const noexcept
 Synonym for getLongitude.
 
Angle getLatitude () const noexcept
 The latitude of this point.
 
Angle getDec () const noexcept
 Synonym for getLatitude.
 
Point2D getPosition (AngleUnit unit) const noexcept
 Return longitude, latitude as a Point2D object.
 
sphgeom::UnitVector3d getVector () const noexcept
 A unit vector representation of this point.
 
Angle operator[] (size_t index) const
 Longitude and latitude by index.
 
bool atPole () const noexcept
 true if this point is either coordinate pole.
 
bool isFinite () const noexcept
 true if this point is a well-defined position.
 
bool operator== (SpherePoint const &other) const noexcept
 true if two points have the same longitude and latitude.
 
bool operator!= (SpherePoint const &other) const noexcept
 false if two points represent the same position.
 
std::size_t hash_value () const noexcept
 Return a hash of this object.
 
Angle bearingTo (SpherePoint const &other) const
 Orientation at this point of the great circle arc to another point.
 
Angle separation (SpherePoint const &other) const noexcept
 Angular distance between two points.
 
SpherePoint rotated (SpherePoint const &axis, Angle const &amount) const noexcept
 Return a point rotated from this one around an axis.
 
SpherePoint offset (Angle const &bearing, Angle const &amount) const
 Return a point offset from this one along a great circle.
 
std::pair< Angle, AnglegetTangentPlaneOffset (SpherePoint const &other) const
 Get the offset from a tangent plane centered at this point to another point.
 

Related Symbols

(Note that these are not member symbols.)

std::ostreamoperator<< (std::ostream &os, SpherePoint const &point)
 Print the value of a point to a stream.
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ SpherePoint() [1/7]

lsst::geom::SpherePoint::SpherePoint ( Angle const & longitude,
Angle const & latitude )

Construct a SpherePoint from a longitude and latitude.

Parameters
longitudeThe longitude of the point. +/-inf is treated as nan (because longitude is wrapped to a standard range and infinity cannot be wrapped)
latitudeThe latitude of the point. Must be in the interval [-π/2, π/2] radians.
Exceptions
pex::exceptions::InvalidParameterErrorThrown if latitude is out of range.
Exception Safety
Provides strong exception guarantee.

Definition at line 68 of file SpherePoint.cc.

69 : _longitude(longitude.wrap().asRadians()), _latitude(latitude.asRadians()) {
70 if (fabs(_latitude) > HALFPI) {
71 throw pexExcept::InvalidParameterError("Angle " + to_string(latitude.asDegrees()) +
72 " is not a valid latitude.");
73 }
74}
table::Key< lsst::geom::Angle > longitude
Definition VisitInfo.cc:215
table::Key< lsst::geom::Angle > latitude
Definition VisitInfo.cc:214
Reports invalid arguments.
Definition Runtime.h:66
T fabs(T... args)
double constexpr HALFPI
Definition Angle.h:42
T to_string(T... args)

◆ SpherePoint() [2/7]

lsst::geom::SpherePoint::SpherePoint ( double longitude,
double latitude,
AngleUnit units )

Construct a SpherePoint from double longitude and latitude.

Parameters
longitudeThe longitude of the point. +/-inf is treated as nan (because longitude is wrapped to a standard range and infinity cannot be wrapped)
latitudeThe latitude of the point. Must be in the interval [-π/2, π/2] radians.
unitsThe units of longitude and latitude
Exceptions
pex::exceptions::InvalidParameterErrorThrown if latitude is out of range.
Exception Safety
Provides strong exception guarantee.

Definition at line 65 of file SpherePoint.cc.

66 : SpherePoint(longitude * units, latitude * units) {}
SpherePoint() noexcept
Construct a SpherePoint with "nan" for longitude and latitude.

◆ SpherePoint() [3/7]

lsst::geom::SpherePoint::SpherePoint ( sphgeom::Vector3d const & vector)
explicit

Construct a SpherePoint from a vector representing a direction.

Parameters
vectorA 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.
Exceptions
pex::exceptions::InvalidParameterErrorThrown if vector is the zero vector.
Exception Safety
Provides strong exception guarantee.
Note
If the SpherePoint is at a pole then longitude is set to 0. That provides predictable behavior for bearingTo and offset.

Definition at line 76 of file SpherePoint.cc.

76 {
77 // sphgeom Vector3d has its own normalization,
78 // but its behavior is not documented for non-finite values
79 double norm = vector.getNorm();
80 if (norm <= 0.0) {
81 stringstream buffer;
82 buffer << "Vector " << vector << " has zero norm and cannot be normalized.";
84 }
85 // To avoid unexpected behavior from mixing finite elements and infinite norm
86 if (!isfinite(norm)) {
87 norm = NAN;
88 }
89 auto unitVector =
90 sphgeom::UnitVector3d::fromNormalized(vector.x() / norm, vector.y() / norm, vector.z() / norm);
91 _set(unitVector);
92}
static UnitVector3d fromNormalized(Vector3d const &v)
fromNormalized returns the unit vector equal to v, which is assumed to be normalized.
T isfinite(T... args)
T str(T... args)

◆ SpherePoint() [4/7]

lsst::geom::SpherePoint::SpherePoint ( sphgeom::LonLat const & lonLat)
noexcept

Construct a SpherePoint from a sphgeom::LonLat.

Parameters
lonLatThe lonLat
Exception Safety
Shall not throw exceptions.

Definition at line 94 of file SpherePoint.cc.

95 : SpherePoint(lonLat.getLon().asRadians(), lonLat.getLat().asRadians(), radians) {}

◆ SpherePoint() [5/7]

lsst::geom::SpherePoint::SpherePoint ( )
noexcept

Construct a SpherePoint with "nan" for longitude and latitude.

Definition at line 108 of file SpherePoint.cc.

108: _longitude(nan("")), _latitude(nan("")) {}
T nan(T... args)

◆ SpherePoint() [6/7]

lsst::geom::SpherePoint::SpherePoint ( SpherePoint const & other)
defaultnoexcept

Create a copy of a SpherePoint.

Parameters
otherThe point to copy.
Exception Safety
Shall not throw exceptions.

◆ SpherePoint() [7/7]

lsst::geom::SpherePoint::SpherePoint ( SpherePoint && other)
defaultnoexcept

Create a copy of a SpherePoint.

As SpherePoint(SpherePoint const&), except that other may be left in an unspecified but valid state.

◆ ~SpherePoint()

lsst::geom::SpherePoint::~SpherePoint ( )
defaultnoexcept

Member Function Documentation

◆ atPole()

bool lsst::geom::SpherePoint::atPole ( ) const
inlinenoexcept

true if this point is either coordinate pole.

Returns
true if this point is at the north or south pole, false otherwise
Exception Safety
Shall not throw exceptions.

Definition at line 237 of file SpherePoint.h.

237 {
238 // Unit tests indicate we don't need to worry about epsilon-errors, in that
239 // Objects constructed from lat=90*degrees, <0,0,1>, etc. all have atPole() = true.
240 return fabs(_latitude) >= HALFPI;
241 }

◆ bearingTo()

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.

Parameters
otherthe point to which to measure the bearing
Returns
the direction, as defined above, in the interval [0, 2π).
Exception Safety
Provides strong exception guarantee.
Note
For two points 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.

159 {
160 Angle const deltaLon = other.getLongitude() - this->getLongitude();
161
162 double const sinDelta1 = sin(getLatitude().asRadians());
163 double const sinDelta2 = sin(other.getLatitude().asRadians());
164 double const cosDelta1 = cos(getLatitude().asRadians());
165 double const cosDelta2 = cos(other.getLatitude().asRadians());
166
167 // Adapted from http://www.movable-type.co.uk/scripts/latlong.html
168 double const y = sin(deltaLon) * cosDelta2;
169 double const x = cosDelta1 * sinDelta2 - sinDelta1 * cosDelta2 * cos(deltaLon);
170 return (90.0 * degrees - atan2(y, x) * radians).wrap();
171}
int y
Definition SpanSet.cc:48
T atan2(T... args)
Angle getLatitude() const noexcept
The latitude of this point.
Angle getLongitude() const noexcept
The longitude of this point.
T cos(T... args)
T sin(T... args)

◆ getDec()

Angle lsst::geom::SpherePoint::getDec ( ) const
inlinenoexcept

Synonym for getLatitude.

Definition at line 193 of file SpherePoint.h.

193{ return _latitude * radians; };
AngleUnit constexpr radians
constant with units of radians
Definition Angle.h:109

◆ getLatitude()

Angle lsst::geom::SpherePoint::getLatitude ( ) const
inlinenoexcept

The latitude of this point.

Returns
the latitude, in the interval [-π/2, π/2] radians.
Exception Safety
Shall not throw exceptions.

Definition at line 190 of file SpherePoint.h.

190{ return _latitude * radians; };

◆ getLongitude()

Angle lsst::geom::SpherePoint::getLongitude ( ) const
inlinenoexcept

The longitude of this point.

Returns
the longitude, in the interval [0, 2π) radians.
Exception Safety
Shall not throw exceptions.

Definition at line 178 of file SpherePoint.h.

178{ return _longitude * radians; };

◆ getPosition()

Point2D lsst::geom::SpherePoint::getPosition ( AngleUnit unit) const
noexcept

Return longitude, latitude as a Point2D object.

Parameters
[in]unitUnits of returned data.
Exception Safety
Shall not throw exceptions.

Definition at line 129 of file SpherePoint.cc.

129 {
130 return Point2D(getLongitude().asAngularUnits(unit), getLatitude().asAngularUnits(unit));
131}
Point< double, 2 > Point2D
Definition Point.h:324

◆ getRa()

Angle lsst::geom::SpherePoint::getRa ( ) const
inlinenoexcept

Synonym for getLongitude.

Definition at line 181 of file SpherePoint.h.

181{ return _longitude * radians; };

◆ getTangentPlaneOffset()

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.

Parameters
[in]otherCoordinate to which to compute offset
Returns
pair of Angles: Longitude and Latitude offsets

Definition at line 214 of file SpherePoint.cc.

214 {
215 geom::Angle const alpha1 = this->getLongitude();
216 geom::Angle const delta1 = this->getLatitude();
217 geom::Angle const alpha2 = other.getLongitude();
218 geom::Angle const delta2 = other.getLatitude();
219
220 // Compute the projection of "other" on a tangent plane centered at this point
221 double const sinDelta1 = std::sin(delta1);
222 double const cosDelta1 = std::cos(delta1);
223 double const sinDelta2 = std::sin(delta2);
224 double const cosDelta2 = std::cos(delta2);
225 double const cosAlphaDiff = std::cos(alpha2 - alpha1);
226 double const sinAlphaDiff = std::sin(alpha2 - alpha1);
227
228 double const div = cosDelta1 * cosAlphaDiff * cosDelta2 + sinDelta1 * sinDelta2;
229 double const xi = cosDelta1 * sinAlphaDiff / div;
230 double const eta = (cosDelta1 * cosAlphaDiff * sinDelta2 - sinDelta1 * cosDelta2) / div;
231
232 return std::make_pair(xi * geom::radians, eta * geom::radians);
233}
A class representing an angle.
Definition Angle.h:128
T div(T... args)
T make_pair(T... args)

◆ getVector()

sphgeom::UnitVector3d lsst::geom::SpherePoint::getVector ( ) const
noexcept

A unit vector representation of this point.

Returns
a unit vector whose direction corresponds to this point
Exception Safety
Shall not throw exceptions.

Definition at line 124 of file SpherePoint.cc.

124 {
125 return sphgeom::UnitVector3d::fromNormalized(cos(_longitude) * cos(_latitude),
126 sin(_longitude) * cos(_latitude), sin(_latitude));
127}

◆ hash_value()

std::size_t lsst::geom::SpherePoint::hash_value ( ) const
noexcept

Return a hash of this object.

Definition at line 154 of file SpherePoint.cc.

154 {
155 // Completely arbitrary seed
156 return cpputils::hashCombine(17, _longitude, _latitude);
157}
std::size_t hashCombine(std::size_t seed) noexcept
Combine hashes.
Definition hashCombine.h:35

◆ isFinite()

bool lsst::geom::SpherePoint::isFinite ( ) const
noexcept

true if this point is a well-defined position.

Returns
true if getLongitude(), getLatitude(), and getVector() return finite floating-point values; false if any return NaN or infinity.
Exception Safety
Shall not throw exceptions.

Definition at line 144 of file SpherePoint.cc.

144{ return isfinite(_longitude) && isfinite(_latitude); }

◆ offset()

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)thenA.bearingTo(B) = amountandA.separationTo(B) = amount. Negative values ofamountare supported in the obvious manner: A.offset(bearing, delta) = A.offset(bearing + 180*degrees, -delta)`

Parameters
bearingthe direction in which to move this point, following the conventions described in bearingTo.
amountthe distance by which to move along the great circle defined by bearing
Returns
a new point created by rotating this point. If the new point is at the pole then its longitude will be 0.
Exception Safety
Provides strong exception guarantee.

Definition at line 185 of file SpherePoint.cc.

185 {
186 double const phi = bearing.asRadians();
187
188 // let v = vector in the direction bearing points (tangent to surface of sphere)
189 // To do the rotation, use rotated() method.
190 // - must provide an axis of rotation: take the cross product r x v to get that axis (pole)
191
192 auto r = getVector();
193
194 // Get the vector v:
195 // let u = unit vector lying on a parallel of declination
196 // let w = unit vector along line of longitude = r x u
197 // the vector v must satisfy the following:
198 // r . v = 0
199 // u . v = cos(phi)
200 // w . v = sin(phi)
201
202 // v is a linear combination of u and w
203 // v = cos(phi)*u + sin(phi)*w
204 sphgeom::Vector3d const u(-sin(_longitude), cos(_longitude), 0.0);
205 auto w = r.cross(u);
206 auto v = cos(phi) * u + sin(phi) * w;
207
208 // take r x v to get the axis
209 SpherePoint axis = SpherePoint(r.cross(v));
210
211 return rotated(axis, amount);
212}
sphgeom::UnitVector3d getVector() const noexcept
A unit vector representation of this point.
SpherePoint rotated(SpherePoint const &axis, Angle const &amount) const noexcept
Return a point rotated from this one around an axis.
double w
Definition CoaddPsf.cc:70

◆ operator sphgeom::LonLat()

lsst::geom::SpherePoint::operator sphgeom::LonLat ( ) const
noexcept

Make SpherePoint implicitly convertible to LonLat.

Exception Safety
Shall not throw exceptions.

Definition at line 118 of file SpherePoint.cc.

118 {
119 return sphgeom::LonLat::fromRadians(getLongitude().asRadians(), getLatitude().asRadians());
120}
static LonLat fromRadians(double lon, double lat)
Definition LonLat.h:62

◆ operator!=()

bool lsst::geom::SpherePoint::operator!= ( SpherePoint const & other) const
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.

152{ return !(*this == other); }

◆ operator=() [1/2]

SpherePoint & lsst::geom::SpherePoint::operator= ( SpherePoint && other)
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.

◆ operator=() [2/2]

SpherePoint & lsst::geom::SpherePoint::operator= ( SpherePoint const & other)
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.

Parameters
otherThe object with which to overwrite this one.
Returns
a reference to this object.
Exception Safety
Shall not throw exceptions.

◆ operator==()

bool lsst::geom::SpherePoint::operator== ( SpherePoint const & other) const
noexcept

true if two points have the same longitude and latitude.

Parameters
otherthe point to test for equality
Returns
true if this point has exactly the same values of getLongitude() and getLatitude() as other, false otherwise
Exception Safety
Shall not throw exceptions.
Note
Two points at the same pole will compare unequal if they have different longitudes, despite representing the same point on the unit sphere. This is important because the behavior of offset and bearingTo depend on longitude, even at the pole.
Warning
Points whose getLongitude(), getLatitude(), or getVector() methods return NaN 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.

146 {
147 // Deliberate override of Style Guide 5-12
148 // Approximate FP comparison would make object equality intransitive
149 return _longitude == other._longitude && _latitude == other._latitude;
150}

◆ operator[]()

Angle lsst::geom::SpherePoint::operator[] ( size_t index) const

Longitude and latitude by index.

Parameters
indexthe index of the spherical coordinate to return. Must be either 0 or 1.
Returns
getLongitude() if index = 0, or getLatitude() if index = 1
Exceptions
pex::exceptions::OutOfRangeErrorThrown if index is neither 0 nor 1.
Exception Safety
Provides strong exception guarantee.

Definition at line 133 of file SpherePoint.cc.

133 {
134 switch (index) {
135 case 0:
136 return getLongitude();
137 case 1:
138 return getLatitude();
139 default:
140 throw pexExcept::OutOfRangeError("Index " + to_string(index) + " must be 0 or 1.");
141 }
142}
Reports attempts to access elements outside a valid range of indices.
Definition Runtime.h:89

◆ rotated()

SpherePoint lsst::geom::SpherePoint::rotated ( SpherePoint const & axis,
Angle const & amount ) const
noexcept

Return a point rotated from this one around an axis.

Parameters
axisa point defining the north pole of the rotation axis.
amountthe amount of rotation, where positive values represent right-handed rotations around axis.
Returns
a new point created by rotating this point. If the new point is at the pole then its longitude will be 0.
Exception Safety
Shall not throw exceptions.

Definition at line 178 of file SpherePoint.cc.

178 {
179 auto const rotation = Eigen::AngleAxisd(amount.asRadians(), asEigen(axis.getVector())).matrix();
180 auto const x = asEigen(getVector());
181 auto const xprime = rotation * x;
182 return SpherePoint(sphgeom::Vector3d(xprime[0], xprime[1], xprime[2]));
183}
Eigen::Vector3d asEigen(sphgeom::Vector3d const &vector) noexcept

◆ separation()

Angle lsst::geom::SpherePoint::separation ( SpherePoint const & other) const
noexcept

Angular distance between two points.

Parameters
otherthe point to which to measure the separation
Returns
the length of the shortest (great circle) arc between the two points. Shall not be negative.
Exception Safety
Shall not throw exceptions.

Definition at line 173 of file SpherePoint.cc.

173 {
174 return haversine(getLongitude() - other.getLongitude(), getLatitude() - other.getLatitude(),
175 cos(getLatitude().asRadians()), cos(other.getLatitude().asRadians()));
176}

Friends And Related Symbol Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream & os,
SpherePoint const & point )
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)".

Parameters
osthe stream to which to print point
pointthe point to print to the stream
Returns
a reference to os
Exceptions
pex::exceptions::std::ostream::failureThrown if an I/O state flag was set that was registered with os.exceptions(). See the documentation of std::ostream for more details.
Exception Safety
Provides basic exception guarantee.

Definition at line 253 of file SpherePoint.cc.

253 {
254 // Can't provide atomic guarantee anyway for I/O, so ok to set ostream states here.
255 auto oldFlags = os.setf(ostream::fixed);
256 // 10 digits of precision for a value in degrees is about 1 milliarcsecond
257 auto oldPrecision = os.precision(10);
258
259 os << "(" << point.getLongitude().asDegrees() << ", ";
260 os.setf(ostream::showpos);
261 os << point.getLatitude().asDegrees() << ")";
262
263 os.flags(oldFlags);
264 os.precision(oldPrecision);
265 return os;
266}
std::ostream * os
Definition Schema.cc:557

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