GeographicLib 2.6
Loading...
Searching...
No Matches
GeographicLib::Triaxial::GeodesicLine3 Class Reference

The direct geodesic problem for a triaxial ellipsoid. More...

#include <GeographicLib/Triaxial/GeodesicLine3.hpp>

Public Member Functions

 GeodesicLine3 (const Geodesic3 &tg, Angle bet1, Angle omg1, Angle alp1)
 GeodesicLine3 (const Geodesic3 &tg, real bet1, real omg1, real alp1)
void Position (real s12, Angle &bet2, Angle &omg2, Angle &alp2) const
void Position (real s12, real &bet2, real &omg2, real &alp2, bool unroll=true) const
void SetDistance (real s13)
real Distance () const
void pos1 (Angle &bet1, Angle &omg1, Angle &alp1) const
void pos1 (real &bet1, real &omg1, real &alp1, bool unroll=true) const

Detailed Description

The direct geodesic problem for a triaxial ellipsoid.

This is an implementation of Jacobi's method for finding geodesics on a triaxial ellipsoid (1839).

This class performs the quadrature necessary to evaluate to the integrals for the course and distance equations and it solves the 2 coupled equations to determine the latitude and longitude of the destination. This functionality is used by the Geodesic3 class to solve the inverse geodesic problem.

Example of use:

// Example of using the Triaxial::GeodesicLine3 class.
#include <iostream>
#include <iomanip>
#include <exception>
using namespace std;
using namespace GeographicLib;
int main() {
try {
Triaxial::GeodesicLine3 l = g.Line(90, 0, 135);
// The approximate distance between opposite umbilical points
double s0 = 20003986;
int num = 20;
for (int i = 0; i <= num; ++i) {
double bet2, omg2, alp2, s12 = i*s0/num;
l.Position(s12, bet2, omg2, alp2);
cout << s12 << " " << bet2 << " " << omg2 << " " << alp2 << "\n";
}
}
catch (const exception& e) {
cerr << "Caught exception: " << e.what() << "\n";
return 1;
}
}
int main(int argc, const char *const argv[])
Header for GeographicLib::Triaxial::Geodesic3 class.
static const Ellipsoid3 & Earth()
The solution of the geodesic problem for a triaxial ellipsoid.
Definition Geodesic3.hpp:65
The direct geodesic problem for a triaxial ellipsoid.
void Position(real s12, Angle &bet2, Angle &omg2, Angle &alp2) const
Namespace for GeographicLib.

Geod3Solve is a command-line utility providing access to the functionality of Geodesic3 and GeodesicLine3.

The class experimental::TriaxialGeodesicODE solves the direct geodesic problem by integrating the corresponing ordinary differential equations. This is not part of GeographicLib itself because it used Boost for solving the ODEs and Boost is not a requirement for using GeographicLib.

Definition at line 54 of file GeodesicLine3.hpp.

Constructor & Destructor Documentation

◆ GeodesicLine3() [1/2]

GeographicLib::Triaxial::GeodesicLine3::GeodesicLine3 ( const Geodesic3 & tg,
Angle bet1,
Angle omg1,
Angle alp1 )

Constructor for a geodesic line specified at point 1

Parameters
[in]tgthe underlying Geodesic3 object.
[in]bet1the ellipsoidal latitude of point 1.
[in]omg1the ellipsoidal longitude of point 1.
[in]alp1the forward azimuth of the geodesic at point 1.

Definition at line 35 of file GeodesicLine3.cpp.

References GeographicLib::AngleT< T >::round().

◆ GeodesicLine3() [2/2]

GeographicLib::Triaxial::GeodesicLine3::GeodesicLine3 ( const Geodesic3 & tg,
real bet1,
real omg1,
real alp1 )

Constructor for a geodesic line specified at point 1 in degrees

Parameters
[in]tgthe underlying Geodesic3 object.
[in]bet1the ellipsoidal latitude of point 1.
[in]omg1the ellipsoidal longitude of point 1 (in degrees).
[in]alp1the forward azimuth of the geodesic at point 1 (in degrees).

Definition at line 49 of file GeodesicLine3.cpp.

Member Function Documentation

◆ Position() [1/2]

void GeographicLib::Triaxial::GeodesicLine3::Position ( real s12,
Angle & bet2,
Angle & omg2,
Angle & alp2 ) const

Find point 2 a given distance from point 1

Parameters
[in]s12the distance from point 1 to point 2.
[out]bet2the ellipsoidal latitude of point 2.
[out]omg2the ellipsoidal longitude of point 2.
[out]alp2the forward azimuth of the geodesic at point 2.

Definition at line 71 of file GeodesicLine3.cpp.

References GeographicLib::AngleT< T >::c(), GeographicLib::AngleT< Math::real >::cardinal(), GeographicLib::AngleT< T >::flipsign(), GeographicLib::AngleT< Math::real >::radians(), GeographicLib::AngleT< T >::rebase(), GeographicLib::AngleT< T >::reflect(), GeographicLib::AngleT< T >::round(), GeographicLib::AngleT< T >::s(), and std::swap().

Referenced by GeographicLib::Triaxial::Geodesic3::Direct(), and Position().

◆ Position() [2/2]

void GeographicLib::Triaxial::GeodesicLine3::Position ( real s12,
real & bet2,
real & omg2,
real & alp2,
bool unroll = true ) const

Find point 2 a given distance from point 1 in degrees

Parameters
[in]s12the distance from point 1 to point 2.
[out]bet2the ellipsoidal latitude of point 2 (in degrees).
[out]omg2the ellipsoidal longitude of point 2 (in degrees).
[out]alp2the forward azimuth of the geodesic at point 2 (in degrees).
[in]unrollif true (the default) "unroll" the coordinates; otherwise reduce them to their conventional ranges.

Definition at line 161 of file GeodesicLine3.cpp.

References GeographicLib::Triaxial::Ellipsoid3::AngNorm(), Position(), and GeographicLib::AngleT< T >::setn().

◆ SetDistance()

void GeographicLib::Triaxial::GeodesicLine3::SetDistance ( real s13)
inline

Define a reference point 3 on the geodesic line

Parameters
[in]s13distance from point 1 to point 3.

Definition at line 540 of file GeodesicLine3.hpp.

◆ Distance()

real GeographicLib::Triaxial::GeodesicLine3::Distance ( ) const
inline
Returns
s13 the distance from point 1 to reference point 3.

Definition at line 544 of file GeodesicLine3.hpp.

◆ pos1() [1/2]

void GeographicLib::Triaxial::GeodesicLine3::pos1 ( Angle & bet1,
Angle & omg1,
Angle & alp1 ) const

Return the coordinates of point 1

Parameters
[out]bet1the ellipsoidal latitude of point 1.
[out]omg1the ellipsoidal longitude of point 1.
[out]alp1the forward azimuth of the geodesic at point 1.

Definition at line 54 of file GeodesicLine3.cpp.

Referenced by pos1(), and GeographicLib::Triaxial::GeodesicLine3::fline::fics::setquadrant().

◆ pos1() [2/2]

void GeographicLib::Triaxial::GeodesicLine3::pos1 ( real & bet1,
real & omg1,
real & alp1,
bool unroll = true ) const

Return the coordinates of point 1 in degrees

Parameters
[out]bet1the ellipsoidal latitude of point 1 (in degrees).
[out]omg1the ellipsoidal longitude of point 1 (in degrees).
[out]alp1the forward azimuth of the geodesic at point 1 (in degrees).
[in]unrollif true (the default), return the coordinates used to specify this line; otherwise reduce the coordinates for point 1 to their conventional ranges.

Definition at line 58 of file GeodesicLine3.cpp.

References GeographicLib::Triaxial::Ellipsoid3::AngNorm(), pos1(), and GeographicLib::AngleT< T >::setn().


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