|
GeographicLib 2.6
|
Jacobi's conformal projection of a triaxial ellipsoid. More...
#include <GeographicLib/Triaxial/Conformal3.hpp>
Public Types | |
| using | vec3 = Ellipsoid3::vec3 |
Public Member Functions | |
| Conformal3 (const Ellipsoid3 &t=Ellipsoid3{}) | |
| Conformal3 (real a, real b, real c) | |
| Conformal3 (real b, real e2, real k2, real kp2) | |
| Math::real | x0 () const |
| Math::real | x (Angle omg) const |
| Math::real | x (real omg) const |
| Angle | omega (real x) const |
| Math::real | omegad (real x) const |
| Math::real | y0 () const |
| Math::real | y (Angle bet) const |
| Math::real | y (real bet) const |
| Angle | beta (real y) const |
| Math::real | betad (real y) const |
| void | Forward (Angle bet, Angle omg, real &x, real &y) const |
| void | Forward (real bet, real omg, real &x, real &y) const |
| void | Forward (Angle bet, Angle omg, real &x, real &y, real &m) const |
| void | Forward (real bet, real omg, real &x, real &y, real &m) const |
| void | Reverse (real x, real y, Angle &bet, Angle &omg) const |
| void | Reverse (real x, real y, real &bet, real &omg) const |
| void | Reverse (real x, real y, Angle &bet, Angle &omg, real &m) const |
| void | Reverse (real x, real y, real &bet, real &omg, real &m) const |
| void | ForwardSphere (Angle bet, Angle omg, vec3 &r, vec3 &v, real &m) const |
| void | ForwardSphere (real bet, real omg, vec3 &r, vec3 &v, real &m) const |
| void | ReverseSphere (vec3 r, vec3 v, Angle &bet, Angle &omg, Angle &gam, real &m) const |
| void | ReverseSphere (vec3 r, vec3 v, real &bet, real &omg, real &gam, real &m) const |
| void | ForwardOther (const Conformal3 &alt, Angle bet, Angle omg, Angle &betalt, Angle &omgalt, Angle &gam, real &m) const |
| void | ForwardOther (const Conformal3 &alt, real bet, real omg, real &betalt, real &omgalt, real &gam, real &m) const |
| void | ReverseOther (const Conformal3 &alt, Angle betalt, Angle omgalt, Angle &bet, Angle &omg, Angle &gam, real &m) const |
| void | ReverseOther (const Conformal3 &alt, real betalt, real omgalt, real &bet, real &omg, real &gam, real &m) const |
| const Ellipsoid3 & | t () |
| const Ellipsoid3 & | s () |
Jacobi's conformal projection of a triaxial ellipsoid.
This is a conformal projection of the ellipsoid to a plane in which the grid lines are straight; see Jacobi, Vorlesungen über Dynamik, §28. The constructor takes the semi-axes of the ellipsoid (which must be in order). Member functions map the ellipsoidal coordinates ω and β separately to x and y. Jacobi's coordinates have been multiplied by \(eb/2\) so that the customary results are returned in the cases of a sphere or an ellipsoid of revolution. In particular the scale satisfies \(m\ge 1\) with \(m = 1\) at \(\cos\beta = \sin\omega = 1\). (Note: usually GeographicLib uses \(k\) to denote the scale. However, in order to avoid confusion with the oblateness parameter \(k\) used to specify the triaxial ellipsoid, the symbol \(m\) is used for the scale in this class.)
The ellipsoid is oriented so that the major principal ellipse, \(Z=0\), is the equator, \(\beta=0\), while the minor principal ellipse, \(X=0\), is the meridian, \(\omega\pm\pi/2\). The four umbilic points, \(\sin\omega = \cos\beta = 0\), lie on median principal ellipse in the plane \(Y=0\).
In this projection the easting, x, depends only on the longitude \(\omega\) and the northing, y depends only on the latitude \(\beta\). Thus lines of constant latitude and longitude map to straight lines. For a general ellipsoid, each octant of the ellipsoid maps to a finite rectangle of dimensions x0() x y0(). For an oblate (resp. prolate) ellipsoid, x0() (resp. y0()) diverges.
For any ellipsoid, we define a "conformal sphere" which has exactly the same extent for the mapping of an octant. This allows points on the ellipsoid to be conformally mapped to a sphere. This in turn allows any triaxial ellipsoid to be conformally mapped to any other triaxial ellipsoid.
The units for the easting and the northing are the same as the units uses to specify the size of the ellipsoid.
For more information on this projection, see Jacobi's conformal projection.
Example of use:
Conformal3Proj is a command-line utility providing access to the functionality of Conformal3.
Definition at line 67 of file Conformal3.hpp.
Definition at line 108 of file Conformal3.hpp.
| GeographicLib::Triaxial::Conformal3::Conformal3 | ( | const Ellipsoid3 & | t = Ellipsoid3{} | ) |
Constructor for a triaxial ellipsoid defined by Ellipsoid3 object.
| [in] | t | the Ellipsoid3 object. |
Definition at line 20 of file Conformal3.cpp.
References t().
Referenced by Conformal3(), Conformal3(), ForwardOther(), ForwardOther(), ReverseOther(), and ReverseOther().
| GeographicLib::Triaxial::Conformal3::Conformal3 | ( | real | a, |
| real | b, | ||
| real | c ) |
Constructor for a trixial ellipsoid with semi-axes.
| [in] | a | the largest semi-axis. |
| [in] | b | the middle semi-axis. |
| [in] | c | the smallest semi-axis. |
| GeographicErr | if the required ordering is semiaxes is violated. |
The semi-axes must satisfy a ≥ b ≥ c > 0. If a = c (a sphere), then the oblate limit is taken.
Definition at line 38 of file Conformal3.cpp.
References Conformal3().
| GeographicLib::Triaxial::Conformal3::Conformal3 | ( | real | b, |
| real | e2, | ||
| real | k2, | ||
| real | kp2 ) |
Alternate constructor for a triaxial ellipsoid.
| [in] | b | the middle semi-axis. |
| [in] | e2 | the eccentricity squared \(e^2 = (a^2 - c^2)/b^2\). |
| [in] | k2 | the oblateness parameter squared \(k^2 = (b^2 - c^2) / (a^2 - c^2)\). |
| [in] | kp2 | the prolateness parameter squared \(k'^2= (a^2 - b^2) / (a^2 - c^2)\). |
| GeographicErr | if the required ordering is semiaxes is violated. |
Definition at line 41 of file Conformal3.cpp.
References Conformal3().
|
inline |
Definition at line 147 of file Conformal3.hpp.
| Math::real GeographicLib::Triaxial::Conformal3::x | ( | Angle | omg | ) | const |
The x projection.
| [in] | omg | the longitude ω as an Angle. |
Definition at line 149 of file Conformal3.cpp.
References GeographicLib::AngleT< T >::c(), GeographicLib::AngleT< T >::modang(), GeographicLib::AngleT< T >::n(), GeographicLib::Math::NaN(), and GeographicLib::Math::sq().
Referenced by Forward(), Forward(), Forward(), Forward(), ForwardSphere(), omega(), omegad(), Reverse(), Reverse(), Reverse(), Reverse(), ReverseSphere(), and x().
|
inline |
The x projection.
| [in] | omg | the longitude ω (in degrees). |
Definition at line 161 of file Conformal3.hpp.
References x().
| Angle GeographicLib::Triaxial::Conformal3::omega | ( | real | x | ) | const |
The inverse x projection.
| [in] | x | the easting. |
Definition at line 155 of file Conformal3.cpp.
References GeographicLib::AngleT< T >::modang(), GeographicLib::Math::sq(), and x().
Referenced by omegad(), Reverse(), and ReverseSphere().
|
inline |
The inverse x projection.
| [in] | x | the easting. |
Definition at line 177 of file Conformal3.hpp.
|
inline |
Definition at line 183 of file Conformal3.hpp.
| Math::real GeographicLib::Triaxial::Conformal3::y | ( | Angle | bet | ) | const |
The y projection.
| [in] | bet | the latitude β as an Angle |
Definition at line 160 of file Conformal3.cpp.
References GeographicLib::AngleT< T >::c(), GeographicLib::AngleT< T >::modang(), GeographicLib::AngleT< T >::n(), GeographicLib::Math::NaN(), and GeographicLib::Math::sq().
Referenced by beta(), betad(), Forward(), Forward(), Forward(), Forward(), ForwardSphere(), Reverse(), Reverse(), Reverse(), Reverse(), ReverseSphere(), and y().
|
inline |
The y projection.
| [in] | bet | the latitude β (in degrees). |
Definition at line 197 of file Conformal3.hpp.
References y().
| Angle GeographicLib::Triaxial::Conformal3::beta | ( | real | y | ) | const |
The inverse y projection.
| [in] | y | the northing. |
Definition at line 165 of file Conformal3.cpp.
References GeographicLib::AngleT< T >::modang(), GeographicLib::Math::sq(), and y().
Referenced by betad(), Reverse(), Reverse(), Reverse(), ReverseOther(), ReverseSphere(), and ReverseSphere().
|
inline |
The inverse y projection.
| [in] | y | the northing. |
Definition at line 213 of file Conformal3.hpp.
| void GeographicLib::Triaxial::Conformal3::Forward | ( | Angle | bet, |
| Angle | omg, | ||
| real & | x, | ||
| real & | y ) const |
The forward projection.
| [in] | bet | the ellipsoidal latitude. |
| [in] | omg | the ellipsoidal longitude. |
| [out] | x | the easting. |
| [out] | y | the easting. |
Definition at line 169 of file Conformal3.cpp.
Referenced by Forward(), Forward(), Forward(), and ForwardSphere().
|
inline |
The forward projection in degrees
| [in] | bet | the ellipsoidal latitude (in degrees). |
| [in] | omg | the ellipsoidal longitude (in degrees). |
| [out] | x | the easting. |
| [out] | y | the easting. |
Definition at line 233 of file Conformal3.hpp.
| void GeographicLib::Triaxial::Conformal3::Forward | ( | Angle | bet, |
| Angle | omg, | ||
| real & | x, | ||
| real & | y, | ||
| real & | m ) const |
The forward projection with the scale.
| [in] | bet | the ellipsoidal latitude. |
| [in] | omg | the ellipsoidal longitude. |
| [out] | x | the easting. |
| [out] | y | the easting. |
| [out] | m | the scale. |
The meridian convergence for this projection is 0.
Definition at line 175 of file Conformal3.cpp.
|
inline |
The forward projection in degrees with the scale.
| [in] | bet | the ellipsoidal latitude (in degrees). |
| [in] | omg | the ellipsoidal longitude (in degrees). |
| [out] | x | the easting. |
| [out] | y | the easting. |
| [out] | m | the scale. |
The meridian convergence for this projection is 0.
Definition at line 259 of file Conformal3.hpp.
|
inline |
| void GeographicLib::Triaxial::Conformal3::Reverse | ( | real | x, |
| real | y, | ||
| Angle & | bet, | ||
| Angle & | omg, | ||
| real & | m ) const |
The reverse projection with the scale.
| [in] | x | the easting. |
| [in] | y | the easting. |
| [out] | bet | the ellipsoidal latitude. |
| [out] | omg | the ellipsoidal longitude. |
| [out] | m | the scale. |
The meridian convergence for this projection is 0.
Definition at line 179 of file Conformal3.cpp.
|
inline |
The reverse projection in degrees with the scale.
| [in] | x | the easting. |
| [in] | y | the easting. |
| [out] | bet | the ellipsoidal latitude (in degrees). |
| [out] | omg | the ellipsoidal longitude (in degrees). |
| [out] | m | the scale. |
The meridian convergence for this projection is 0.
Definition at line 307 of file Conformal3.hpp.
| void GeographicLib::Triaxial::Conformal3::ForwardSphere | ( | Angle | bet, |
| Angle | omg, | ||
| vec3 & | r, | ||
| vec3 & | v, | ||
| real & | m ) const |
The forward projection onto the conformal sphere.
| [in] | bet | the ellipsoidal latitude. |
| [in] | omg | the ellipsoidal longitude. |
| [out] | r | the projected position on the sphere |
| [out] | v | the projected direction for due north on the triaxial ellipsoid. |
| [out] | m | the scale. |
Definition at line 308 of file Conformal3.cpp.
References Forward(), GeographicLib::AngleT< T >::s(), GeographicLib::Math::sq(), x(), and y().
Referenced by ForwardOther(), and ForwardSphere().
|
inline |
The forward projection in degrees onto the conformal sphere.
| [in] | bet | the ellipsoidal latitude (in degrees). |
| [in] | omg | the ellipsoidal longitude (in degrees). |
| [out] | r | the projected position on the sphere |
| [out] | v | the projected direction for due north on the triaxial ellipsoid. |
| [out] | m | the scale. |
Definition at line 333 of file Conformal3.hpp.
References ForwardSphere().
| void GeographicLib::Triaxial::Conformal3::ReverseSphere | ( | vec3 | r, |
| vec3 | v, | ||
| Angle & | bet, | ||
| Angle & | omg, | ||
| Angle & | gam, | ||
| real & | m ) const |
The reverse projection from the conformal sphere.
| [in] | r | the position on the sphere. |
| [in] | v | a reference direction. |
| [out] | bet | the ellipsoidal latitude. |
| [out] | omg | the ellipsoidal longitude. |
| [out] | gam | the meridian convergence. |
| [out] | m | the scale. |
Here v is the direction of grid north in some projection and gam is the resulting meridian convergence.
Definition at line 322 of file Conformal3.cpp.
References GeographicLib::Triaxial::Ellipsoid3::AngNorm(), beta(), GeographicLib::AngleT< T >::c(), omega(), GeographicLib::AngleT< T >::s(), GeographicLib::Math::sq(), x(), and y().
Referenced by ForwardOther(), and ReverseSphere().
|
inline |
The reverse projection in degrees from the conformal sphere.
| [in] | r | the position on the sphere. |
| [in] | v | a reference direction. |
| [out] | bet | the ellipsoidal latitude (in degrees). |
| [out] | omg | the ellipsoidal longitude (in degrees). |
| [out] | gam | the meridian convergence (in degrees). |
| [out] | m | the scale. |
Here v is the direction of grid north in some projection and gam is the resulting meridian convergence.
Definition at line 364 of file Conformal3.hpp.
References beta(), and ReverseSphere().
| void GeographicLib::Triaxial::Conformal3::ForwardOther | ( | const Conformal3 & | alt, |
| Angle | bet, | ||
| Angle | omg, | ||
| Angle & | betalt, | ||
| Angle & | omgalt, | ||
| Angle & | gam, | ||
| real & | m ) const |
The forward conformal projection to some other ellipsoid.
| [in] | alt | the Conformal3 object for the other ellipsoid. |
| [in] | bet | the ellipsoidal latitude. |
| [in] | omg | the ellipsoidal longitude. |
| [out] | betalt | the ellipsoidal latitude on the other ellipsoid. |
| [out] | omgalt | the ellipsoidal longitude on the other ellipsoid. |
| [out] | gam | the meridian convergence. |
| [out] | m | the scale. |
Definition at line 338 of file Conformal3.cpp.
References GeographicLib::Triaxial::Ellipsoid3::b(), Conformal3(), ForwardSphere(), and ReverseSphere().
Referenced by ForwardOther(), and ReverseOther().
|
inline |
The forward conformal projection in degrees to some other ellipsoid.
| [in] | alt | the Conformal3 object for the other ellipsoid. |
| [in] | bet | the ellipsoidal latitude (in degrees). |
| [in] | omg | the ellipsoidal longitude (in degrees). |
| [out] | betalt | the ellipsoidal latitude on the other ellipsoid (in degrees). |
| [out] | omgalt | the ellipsoidal longitude on the other ellipsoid (in degrees). |
| [out] | gam | the meridian convergence (in degrees). |
| [out] | m | the scale. |
Definition at line 397 of file Conformal3.hpp.
References Conformal3(), and ForwardOther().
| void GeographicLib::Triaxial::Conformal3::ReverseOther | ( | const Conformal3 & | alt, |
| Angle | betalt, | ||
| Angle | omgalt, | ||
| Angle & | bet, | ||
| Angle & | omg, | ||
| Angle & | gam, | ||
| real & | m ) const |
The reverse conformal projection from some other ellipsoid.
| [in] | alt | the Conformal3 object for the other ellipsoid. |
| [in] | betalt | the ellipsoidal latitude on the other ellipsoid. |
| [in] | omgalt | the ellipsoidal longitude on the other ellipsoid. |
| [out] | bet | the ellipsoidal latitude. |
| [out] | omg | the ellipsoidal longitude. |
| [out] | gam | the meridian convergence. |
| [out] | m | the scale. |
Definition at line 350 of file Conformal3.cpp.
References Conformal3(), and ForwardOther().
Referenced by ReverseOther().
|
inline |
The reverse conformal projection in degrees from some other ellipsoid.
| [in] | alt | the Conformal3 object for the other ellipsoid. |
| [in] | betalt | the ellipsoidal latitude on the other ellipsoid (in degrees). |
| [in] | omgalt | the ellipsoidal longitude on the other ellipsoid (in degrees). |
| [out] | bet | the ellipsoidal latitude (in degrees). |
| [out] | omg | the ellipsoidal longitude (in degrees). |
| [out] | gam | the meridian convergence (in degrees). |
| [out] | m | the scale. |
Definition at line 431 of file Conformal3.hpp.
References beta(), Conformal3(), and ReverseOther().
|
inline |
Definition at line 442 of file Conformal3.hpp.
Referenced by Conformal3().
|
inline |
Definition at line 446 of file Conformal3.hpp.