GeographicLib
1.35
|
Properties of an ellipsoid. More...
#include <GeographicLib/Ellipsoid.hpp>
Public Member Functions | |
Constructor | |
Ellipsoid (real a, real f) | |
Ellipsoid dimensions. | |
Math::real | MajorRadius () const throw () |
Math::real | MinorRadius () const throw () |
Math::real | QuarterMeridian () const throw () |
Math::real | Area () const throw () |
Math::real | Volume () const throw () |
Ellipsoid shape | |
Math::real | Flattening () const throw () |
Math::real | SecondFlattening () const throw () |
Math::real | ThirdFlattening () const throw () |
Math::real | EccentricitySq () const throw () |
Math::real | SecondEccentricitySq () const throw () |
Math::real | ThirdEccentricitySq () const throw () |
Latitude conversion. | |
Math::real | ParametricLatitude (real phi) const throw () |
Math::real | InverseParametricLatitude (real beta) const throw () |
Math::real | GeocentricLatitude (real phi) const throw () |
Math::real | InverseGeocentricLatitude (real theta) const throw () |
Math::real | RectifyingLatitude (real phi) const throw () |
Math::real | InverseRectifyingLatitude (real mu) const throw () |
Math::real | AuthalicLatitude (real phi) const throw () |
Math::real | InverseAuthalicLatitude (real xi) const throw () |
Math::real | ConformalLatitude (real phi) const throw () |
Math::real | InverseConformalLatitude (real chi) const throw () |
Math::real | IsometricLatitude (real phi) const throw () |
Math::real | InverseIsometricLatitude (real psi) const throw () |
Other quantities. | |
Math::real | CircleRadius (real phi) const throw () |
Math::real | CircleHeight (real phi) const throw () |
Math::real | MeridianDistance (real phi) const throw () |
Math::real | MeridionalCurvatureRadius (real phi) const throw () |
Math::real | TransverseCurvatureRadius (real phi) const throw () |
Math::real | NormalCurvatureRadius (real phi, real azi) const throw () |
Static Public Member Functions | |
Eccentricity conversions. | |
static Math::real | SecondFlatteningToFlattening (real fp) throw () |
static Math::real | FlatteningToSecondFlattening (real f) throw () |
static Math::real | ThirdFlatteningToFlattening (real n) throw () |
static Math::real | FlatteningToThirdFlattening (real f) throw () |
static Math::real | EccentricitySqToFlattening (real e2) throw () |
static Math::real | FlatteningToEccentricitySq (real f) throw () |
static Math::real | SecondEccentricitySqToFlattening (real ep2) throw () |
static Math::real | FlatteningToSecondEccentricitySq (real f) throw () |
static Math::real | ThirdEccentricitySqToFlattening (real epp2) throw () |
static Math::real | FlatteningToThirdEccentricitySq (real f) throw () |
Static Public Attributes | |
static const Ellipsoid | WGS84 |
Properties of an ellipsoid.
This class returns various properties of the ellipsoid and converts between various types of latitudes. The latitude conversions are also possible using the various projections supported by GeographicLib; but Ellipsoid provides more direct access (sometimes using private functions of the projection classes). Ellipsoid::RectifyingLatitude, Ellipsoid::InverseRectifyingLatitude, and Ellipsoid::MeridianDistance provide functionality which can be provided by the Geodesic class. However Geodesic uses a series approximation (valid for abs f < 1/150), whereas Ellipsoid computes these quantities using EllipticFunction which provides accurate results even when f is large. Use of this class should be limited to −3 < f < 3/4 (i.e., 1/4 < b/a < 4).
Example of use:
Definition at line 39 of file Ellipsoid.hpp.
GeographicLib::Ellipsoid::Ellipsoid | ( | real | a, |
real | f | ||
) |
Constructor for a ellipsoid with
[in] | a | equatorial radius (meters). |
[in] | f | flattening of ellipsoid. Setting f = 0 gives a sphere. Negative f gives a prolate ellipsoid. If f > 1, set flattening to 1/f. |
GeographicErr | if a or (1 − f ) a is not positive. |
Definition at line 19 of file Ellipsoid.cpp.
|
inline |
Definition at line 84 of file Ellipsoid.hpp.
|
inline |
Definition at line 89 of file Ellipsoid.hpp.
Math::real GeographicLib::Ellipsoid::QuarterMeridian | ( | ) | const | |
throw | ( | |||
) |
Definition at line 36 of file Ellipsoid.cpp.
References GeographicLib::EllipticFunction::E().
Math::real GeographicLib::Ellipsoid::Area | ( | ) | const | |
throw | ( | |||
) |
Definition at line 39 of file Ellipsoid.cpp.
References GeographicLib::Math::atanh(), and GeographicLib::Math::sq().
|
inline |
Definition at line 110 of file Ellipsoid.hpp.
References GeographicLib::Math::sq().
|
inline |
Definition at line 124 of file Ellipsoid.hpp.
|
inline |
Definition at line 131 of file Ellipsoid.hpp.
|
inline |
Definition at line 138 of file Ellipsoid.hpp.
|
inline |
Definition at line 146 of file Ellipsoid.hpp.
|
inline |
Definition at line 154 of file Ellipsoid.hpp.
|
inline |
Definition at line 163 of file Ellipsoid.hpp.
Math::real GeographicLib::Ellipsoid::ParametricLatitude | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
The geographic latitude, φ, is the angle beween the equatorial plane and a vector normal to the surface of the ellipsoid.
The parametric latitude (also called the reduced latitude), β, allows the cartesian coordinated of a meridian to be expressed conveniently in parametric form as
where a and b are the equatorial radius and the polar semi-axis. For a sphere β = φ.
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value β lies in [−90°, 90°].
Definition at line 47 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::InverseParametricLatitude | ( | real | beta | ) | const |
throw | ( | ||||
) |
[in] | beta | the parametric latitude (degrees). |
β must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value φ lies in [−90°, 90°].
Definition at line 50 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::GeocentricLatitude | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
The geocentric latitude, θ, is the angle beween the equatorial plane and a line between the center of the ellipsoid and a point on the ellipsoid. For a sphere θ = φ.
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value θ lies in [−90°, 90°].
Definition at line 53 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::InverseGeocentricLatitude | ( | real | theta | ) | const |
throw | ( | ||||
) |
[in] | theta | the geocentric latitude (degrees). |
θ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value φ lies in [−90°, 90°].
Definition at line 56 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::RectifyingLatitude | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
The rectifying latitude, μ, has the property that the distance along a meridian of the ellipsoid between two points with rectifying latitudes μ1 and μ2 is equal to (μ2 - μ1) L / 90°, where L = QuarterMeridian(). For a sphere μ = φ.
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value μ lies in [−90°, 90°].
Definition at line 59 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::InverseRectifyingLatitude | ( | real | mu | ) | const |
throw | ( | ||||
) |
[in] | mu | the rectifying latitude (degrees). |
μ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value φ lies in [−90°, 90°].
Definition at line 64 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::AuthalicLatitude | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
The authalic latitude, ξ, has the property that the area of the ellipsoid between two circles with authalic latitudes ξ1 and ξ2 is equal to (sin ξ2 - sin ξ1) A / 2, where A = Area(). For a sphere ξ = φ.
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value ξ lies in [−90°, 90°].
Definition at line 71 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::InverseAuthalicLatitude | ( | real | xi | ) | const |
throw | ( | ||||
) |
[in] | xi | the authalic latitude (degrees). |
ξ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value φ lies in [−90°, 90°].
Definition at line 74 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::ConformalLatitude | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
The conformal latitude, χ, gives the mapping of the ellipsoid to a sphere which which is conformal (angles are preserved) and in which the equator of the ellipsoid maps to the equator of the sphere. For a sphere χ = φ.
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value χ lies in [−90°, 90°].
Definition at line 77 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::InverseConformalLatitude | ( | real | chi | ) | const |
throw | ( | ||||
) |
[in] | chi | the conformal latitude (degrees). |
χ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold. The returned value φ lies in [−90°, 90°].
Definition at line 80 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::IsometricLatitude | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
The isometric latitude gives the mapping of the ellipsoid to a plane which which is conformal (angles are preserved) and in which the equator of the ellipsoid maps to a straight line of constant scale; this mapping defines the Mercator projection. For a sphere ψ = sinh−1 tan φ.
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.
Definition at line 83 of file Ellipsoid.cpp.
References GeographicLib::Math::asinh().
Math::real GeographicLib::Ellipsoid::InverseIsometricLatitude | ( | real | psi | ) | const |
throw | ( | ||||
) |
[in] | psi | the isometric latitude (degrees). |
The returned value φ lies in [−90°, 90°].
Definition at line 86 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::CircleRadius | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.
Definition at line 89 of file Ellipsoid.cpp.
References GeographicLib::Math::hypot().
Math::real GeographicLib::Ellipsoid::CircleHeight | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.
Definition at line 95 of file Ellipsoid.cpp.
References GeographicLib::Math::hypot().
Math::real GeographicLib::Ellipsoid::MeridianDistance | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.
Definition at line 101 of file Ellipsoid.cpp.
Math::real GeographicLib::Ellipsoid::MeridionalCurvatureRadius | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.
Definition at line 104 of file Ellipsoid.cpp.
References GeographicLib::Math::sq().
Math::real GeographicLib::Ellipsoid::TransverseCurvatureRadius | ( | real | phi | ) | const |
throw | ( | ||||
) |
[in] | phi | the geographic latitude (degrees). |
φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.
Definition at line 109 of file Ellipsoid.cpp.
References GeographicLib::Math::sq().
Math::real GeographicLib::Ellipsoid::NormalCurvatureRadius | ( | real | phi, |
real | azi | ||
) | const | ||
throw | ( | ||
) |
[in] | phi | the geographic latitude (degrees). |
[in] | azi | the angle between the meridian and the normal section (degrees). |
φ must lie in the range [−90°, 90°] and azi must lie in the range [−540°, 540°); the result is undefined if either of conditions does not hold.
Definition at line 114 of file Ellipsoid.cpp.
References GeographicLib::Math::sq().
|
inlinestatic |
[in] | fp | = f ' = (a − b) / b, the second flattening. |
f ' should lie in (−1, ∞). The returned value f lies in (−∞, 1).
Definition at line 418 of file Ellipsoid.hpp.
|
inlinestatic |
[in] | f | = (a − b) / a, the flattening. |
f should lie in (−∞, 1). The returned value f ' lies in (−1, ∞).
Definition at line 428 of file Ellipsoid.hpp.
|
inlinestatic |
[in] | n | = (a − b) / (a + b), the third flattening. |
n should lie in (−1, 1). The returned value f lies in (−∞, 1).
Definition at line 439 of file Ellipsoid.hpp.
|
inlinestatic |
[in] | f | = (a − b) / a, the flattening. |
f should lie in (−∞, 1). The returned value n lies in (−1, 1).
Definition at line 450 of file Ellipsoid.hpp.
|
inlinestatic |
[in] | e2 | = e2 = (a2 − b2) / a2, the eccentricity squared. |
e2 should lie in (−∞, 1). The returned value f lies in (−∞, 1).
Definition at line 462 of file Ellipsoid.hpp.
|
inlinestatic |
[in] | f | = (a − b) / a, the flattening. |
f should lie in (−∞, 1). The returned value e2 lies in (−∞, 1).
Definition at line 474 of file Ellipsoid.hpp.
|
inlinestatic |
[in] | ep2 | = e' 2 = (a2 − b2) / b2, the second eccentricity squared. |
e' 2 should lie in (−1, ∞). The returned value f lies in (−∞, 1).
Definition at line 486 of file Ellipsoid.hpp.
|
inlinestatic |
[in] | f | = (a − b) / a, the flattening. |
f should lie in (−∞, 1). The returned value e' 2 lies in (−1, ∞).
Definition at line 498 of file Ellipsoid.hpp.
References GeographicLib::Math::sq().
|
inlinestatic |
[in] | epp2 | = e'' 2 = (a2 − b2) / (a2 + b2), the third eccentricity squared. |
e'' 2 should lie in (−1, 1). The returned value f lies in (−∞, 1).
Definition at line 510 of file Ellipsoid.hpp.
|
inlinestatic |
[in] | f | = (a − b) / a, the flattening. |
f should lie in (−∞, 1). The returned value e'' 2 lies in (−1, 1).
Definition at line 522 of file Ellipsoid.hpp.
References GeographicLib::Math::sq().
|
static |
A global instantiation of Ellipsoid with the parameters for the WGS84 ellipsoid.
Definition at line 531 of file Ellipsoid.hpp.