Public Member Functions | Private Member Functions | Private Attributes | List of all members
NETGeographicLib::Ellipsoid Class Reference

.NET wrapper for GeographicLib::Ellipsoid. More...

#include <Ellipsoid.h>

Public Member Functions

 ~Ellipsoid ()
 
Constructor
 Ellipsoid ()
 
 Ellipsoid (double a, double f)
 
Latitude conversion.
double ParametricLatitude (double phi)
 
double InverseParametricLatitude (double beta)
 
double GeocentricLatitude (double phi)
 
double InverseGeocentricLatitude (double theta)
 
double RectifyingLatitude (double phi)
 
double InverseRectifyingLatitude (double mu)
 
double AuthalicLatitude (double phi)
 
double InverseAuthalicLatitude (double xi)
 
double ConformalLatitude (double phi)
 
double InverseConformalLatitude (double chi)
 
double IsometricLatitude (double phi)
 
double InverseIsometricLatitude (double psi)
 
Other quantities.
double CircleRadius (double phi)
 
double CircleHeight (double phi)
 
double MeridianDistance (double phi)
 
double MeridionalCurvatureRadius (double phi)
 
double TransverseCurvatureRadius (double phi)
 
double NormalCurvatureRadius (double phi, double azi)
 

Static Public Member Functions

Eccentricity conversions.
static double SecondFlatteningToFlattening (double fp)
 
static double FlatteningToSecondFlattening (double f)
 
static double ThirdFlatteningToFlattening (double n)
 
static double FlatteningToThirdFlattening (double f)
 
static double EccentricitySqToFlattening (double e2)
 
static double FlatteningToEccentricitySq (double f)
 
static double SecondEccentricitySqToFlattening (double ep2)
 
static double FlatteningToSecondEccentricitySq (double f)
 
static double ThirdEccentricitySqToFlattening (double epp2)
 
static double FlatteningToThirdEccentricitySq (double f)
 

Public Attributes

Ellipsoid dimensions.
property double MajorRadius { double get()
 
property double MinorRadius { double get()
 
property double QuarterMeridian { double get()
 
property double Area { double get()
 
property double Volume { double get()
 
Ellipsoid shape
property double Flattening { double get()
 
property double SecondFlattening { double get()
 
property double ThirdFlattening { double get()
 
property double EccentricitySq { double get()
 
property double SecondEccentricitySq { double get()
 
property double ThirdEccentricitySq { double get()
 

Private Member Functions

 !Ellipsoid ()
 

Private Attributes

GeographicLib::Ellipsoidm_pEllipsoid
 

Detailed Description

.NET wrapper for GeographicLib::Ellipsoid.

This class allows .NET applications to access GeographicLib::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).

C# Example:

using System;
namespace example_Ellipsoid
{
class Program
{
static void Main(string[] args)
{
try {
Ellipsoid wgs84 = new Ellipsoid( Constants.WGS84.MajorRadius,
Constants.WGS84.Flattening);
// Alternatively: Ellipsoid wgs84 = new Ellipsoid();
Console.WriteLine( String.Format(
"The latitude half way between the equator and the pole is {0}",
wgs84.InverseRectifyingLatitude(45)) );
Console.WriteLine( String.Format(
"Half the area of the ellipsoid lies between latitudes +/- {0}",
wgs84.InverseAuthalicLatitude(30))); ;
Console.WriteLine( String.Format(
"The northernmost edge of a square Mercator map is at latitude {0}",
wgs84.InverseIsometricLatitude(180)));
}
catch (GeographicErr e) {
Console.WriteLine( String.Format( "Caught exception: {0}", e.Message ) );
}
}
}
}

Managed C++ Example:

// Example of using the GeographicLib::Ellipsoid class
#include <iostream>
#include <exception>
using namespace std;
using namespace GeographicLib;
int main() {
try {
Ellipsoid wgs84(Constants::WGS84_a(), Constants::WGS84_f());
// Alternatively: const Ellipsoid& wgs84 = Ellipsoid::WGS84();
cout << "The latitude half way between the equator and the pole is "
<< wgs84.InverseRectifyingLatitude(45) << "\n";
cout << "Half the area of the ellipsoid lies between latitudes +/- "
<< wgs84.InverseAuthalicLatitude(30) << "\n";
cout << "The northernmost edge of a square Mercator map is at latitude "
<< wgs84.InverseIsometricLatitude(180) << "\n";
}
catch (const exception& e) {
cerr << "Caught exception: " << e.what() << "\n";
return 1;
}
}

Visual Basic Example:

Imports NETGeographicLib
Module example_Ellipsoid
Sub Main()
Try
Dim wgs84 As Ellipsoid = New Ellipsoid(Constants.WGS84.MajorRadius,
Constants.WGS84.Flattening)
' Alternatively: Dim wgs84 As Ellipsoid = new Ellipsoid()
Console.WriteLine(String.Format(
"The latitude half way between the equator and the pole is {0}",
wgs84.InverseRectifyingLatitude(45)))
Console.WriteLine(String.Format(
"Half the area of the ellipsoid lies between latitudes +/- {0}",
wgs84.InverseAuthalicLatitude(30)))
Console.WriteLine(String.Format(
"The northernmost edge of a square Mercator map is at latitude {0}",
wgs84.InverseIsometricLatitude(180)))
Catch ex As GeographicErr
Console.WriteLine(String.Format("Caught exception: {0}", ex.Message))
End Try
End Sub
End Module

INTERFACE DIFFERENCES:
A default constructor has been provided that assumes a WGS84 ellipsoid.

The following functions are implemented as properties: MajorRadius, MinorRadius, QuarterMeridian, Area, Volume, Flattening, SecondFlattening, ThirdFlattening, EccentricitySq, SecondEccentricitySq, and ThirdEccentricitySq.

Definition at line 47 of file Ellipsoid.h.

Constructor & Destructor Documentation

Ellipsoid::!Ellipsoid ( void  )
private

Definition at line 21 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

Ellipsoid::Ellipsoid ( )

Constructor for a WGS84 ellipsoid

Definition at line 31 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

Ellipsoid::Ellipsoid ( double  a,
double  f 
)

Constructor for a ellipsoid with

Parameters
[in]aequatorial radius (meters).
[in]fflattening of ellipsoid. Setting f = 0 gives a sphere. Negative f gives a prolate ellipsoid.
Exceptions
GeographicErrif a or (1 − f ) a is not positive.

Definition at line 44 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

NETGeographicLib::Ellipsoid::~Ellipsoid ( )
inline

The destructor calls the finalizer.

Definition at line 79 of file Ellipsoid.h.

Member Function Documentation

double Ellipsoid::AuthalicLatitude ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
ξ the authalic 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 97 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::CircleHeight ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
Z = b sin β the distance of a circle of latitude φ from the equator measured parallel to the ellipsoid axis (meters).

φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.

Definition at line 139 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::CircleRadius ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
R = a cos β the radius of a circle of latitude φ (meters). R (π/180°) gives meters per degree longitude measured along a circle of latitude.

φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.

Definition at line 133 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::ConformalLatitude ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
χ the conformal 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 109 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::EccentricitySqToFlattening ( double  e2)
static
Parameters
[in]e2= e2 = (a2b2) / a2, the eccentricity squared.
Returns
f = (ab) / a, the flattening.

e2 should lie in (−∞, 1). The returned value f lies in (−∞, 1).

Definition at line 193 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::FlatteningToEccentricitySq ( double  f)
static
Parameters
[in]f= (ab) / a, the flattening.
Returns
e2 = (a2b2) / a2, the eccentricity squared.

f should lie in (−∞, 1). The returned value e2 lies in (−∞, 1).

Definition at line 199 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::FlatteningToSecondEccentricitySq ( double  f)
static
Parameters
[in]f= (ab) / a, the flattening.
Returns
e' 2 = (a2b2) / b2, the second eccentricity squared.

f should lie in (−∞, 1). The returned value e' 2 lies in (−1, ∞).

Definition at line 211 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::FlatteningToSecondFlattening ( double  f)
static
Parameters
[in]f= (ab) / a, the flattening.
Returns
f ' = (ab) / b, the second flattening.

f should lie in (−∞, 1). The returned value f ' lies in (−1, ∞).

Definition at line 175 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::FlatteningToThirdEccentricitySq ( double  f)
static
Parameters
[in]f= (ab) / a, the flattening.
Returns
e'' 2 = (a2b2) / (a2 + b2), the third eccentricity squared.

f should lie in (−∞, 1). The returned value e'' 2 lies in (−1, 1).

Definition at line 223 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::FlatteningToThirdFlattening ( double  f)
static
Parameters
[in]f= (ab) / a, the flattening.
Returns
n = (ab) / (a + b), the third flattening.

f should lie in (−∞, 1). The returned value n lies in (−1, 1).

Definition at line 187 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::GeocentricLatitude ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
θ the geocentric 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 73 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::InverseAuthalicLatitude ( double  xi)
Parameters
[in]xithe authalic latitude (degrees).
Returns
φ the geographic 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 103 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::InverseConformalLatitude ( double  chi)
Parameters
[in]chithe conformal latitude (degrees).
Returns
φ the geographic 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 115 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::InverseGeocentricLatitude ( double  theta)
Parameters
[in]thetathe geocentric latitude (degrees).
Returns
φ the geographic 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 79 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::InverseIsometricLatitude ( double  psi)
Parameters
[in]psithe isometric latitude (degrees).
Returns
φ the geographic latitude (degrees).

The returned value φ lies in [−90°, 90°].

Definition at line 127 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::InverseParametricLatitude ( double  beta)
Parameters
[in]betathe parametric latitude (degrees).
Returns
φ the geographic 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 67 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::InverseRectifyingLatitude ( double  mu)
Parameters
[in]muthe rectifying latitude (degrees).
Returns
φ the geographic 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 91 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::IsometricLatitude ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
ψ the isometric 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 121 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::MeridianDistance ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
s the distance along a meridian between the equator and a point of latitude φ (meters). s is given by s = μ L / 90°, where L = QuarterMeridian()).

φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.

Definition at line 145 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::MeridionalCurvatureRadius ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
ρ the meridional radius of curvature of the ellipsoid at latitude φ (meters); this is the curvature of the meridian. rho is given by ρ = (180°/π) ds / dφ, where s = MeridianDistance(); thus ρ (π/180°) gives meters per degree latitude measured along a meridian.

φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.

Definition at line 151 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::NormalCurvatureRadius ( double  phi,
double  azi 
)
Parameters
[in]phithe geographic latitude (degrees).
[in]azithe angle between the meridian and the normal section (degrees).
Returns
the radius of curvature of the ellipsoid in the normal section at latitude φ inclined at an angle azi to the meridian (meters).

φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.

Definition at line 163 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::ParametricLatitude ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
β the parametric 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

  • R = a cos β
  • Z = b sin β

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 61 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::RectifyingLatitude ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
μ the rectifying 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 85 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::SecondEccentricitySqToFlattening ( double  ep2)
static
Parameters
[in]ep2= e' 2 = (a2b2) / b2, the second eccentricity squared.
Returns
f = (ab) / a, the flattening.

e' 2 should lie in (−1, ∞). The returned value f lies in (−∞, 1).

Definition at line 205 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::SecondFlatteningToFlattening ( double  fp)
static
Parameters
[in]fp= f ' = (ab) / b, the second flattening.
Returns
f = (ab) / a, the flattening.

f ' should lie in (−1, ∞). The returned value f lies in (−∞, 1).

Definition at line 169 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::ThirdEccentricitySqToFlattening ( double  epp2)
static
Parameters
[in]epp2= e'' 2 = (a2b2) / (a2 + b2), the third eccentricity squared.
Returns
f = (ab) / a, the flattening.

e'' 2 should lie in (−1, 1). The returned value f lies in (−∞, 1).

Definition at line 217 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::ThirdFlatteningToFlattening ( double  n)
static
Parameters
[in]n= (ab) / (a + b), the third flattening.
Returns
f = (ab) / a, the flattening.

n should lie in (−1, 1). The returned value f lies in (−∞, 1).

Definition at line 181 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

double Ellipsoid::TransverseCurvatureRadius ( double  phi)
Parameters
[in]phithe geographic latitude (degrees).
Returns
ν the transverse radius of curvature of the ellipsoid at latitude φ (meters); this is the curvature of a curve on the ellipsoid which also lies in a plane perpendicular to the ellipsoid and to the meridian. ν is related to R = CircleRadius() by R = ν cos φ.

φ must lie in the range [−90°, 90°]; the result is undefined if this condition does not hold.

Definition at line 157 of file dotnet/NETGeographicLib/Ellipsoid.cpp.

Member Data Documentation

property double NETGeographicLib::Ellipsoid::Area { double get()
Returns
A the total area of the ellipsoid (meters2). For a sphere A = 4π a2. The radius of a sphere with the same area is sqrt(A / (4π)).

Definition at line 109 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::EccentricitySq { double get()
Returns
e2 = (a2b2) / a2, the eccentricity squared of the ellipsoid. This is zero, positive, or negative for a sphere, oblate ellipsoid, or prolate ellipsoid.

Definition at line 151 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::Flattening { double get()
Returns
f = (ab) / a, the flattening of the ellipsoid. This is the value used in the constructor. This is zero, positive, or negative for a sphere, oblate ellipsoid, or prolate ellipsoid.

Definition at line 129 of file Ellipsoid.h.

GeographicLib::Ellipsoid* NETGeographicLib::Ellipsoid::m_pEllipsoid
private

Definition at line 51 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::MajorRadius { double get()
Returns
a the equatorial radius of the ellipsoid (meters). This is the value used in the constructor.

Definition at line 90 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::MinorRadius { double get()
Returns
b the polar semi-axis (meters).

Definition at line 95 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::QuarterMeridian { double get()
Returns
L the distance between the equator and a pole along a meridian (meters). For a sphere L = (π/2) a. The radius of a sphere with the same meridian length is L / (π/2).

Definition at line 102 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::SecondEccentricitySq { double get()
Returns
e' 2 = (a2b2) / b2, the second eccentricity squared of the ellipsoid. This is zero, positive, or negative for a sphere, oblate ellipsoid, or prolate ellipsoid.

Definition at line 159 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::SecondFlattening { double get()
Returns
f ' = (ab) / b, the second flattening of the ellipsoid. This is zero, positive, or negative for a sphere, oblate ellipsoid, or prolate ellipsoid.

Definition at line 136 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::ThirdEccentricitySq { double get()
Returns
e'' 2 = (a2b2) / (a2 + b2), the third eccentricity squared of the ellipsoid. This is zero, positive, or negative for a sphere, oblate ellipsoid, or prolate ellipsoid.

Definition at line 168 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::ThirdFlattening { double get()
Returns
n = (ab) / (a + b), the third flattening of the ellipsoid. This is zero, positive, or negative for a sphere, oblate ellipsoid, or prolate ellipsoid.

Definition at line 143 of file Ellipsoid.h.

property double NETGeographicLib::Ellipsoid::Volume { double get()
Returns
V the total volume of the ellipsoid (meters3). For a sphere V = (4π / 3) a3. The radius of a sphere with the same volume is cbrt(V / (4π/3)).

Definition at line 116 of file Ellipsoid.h.


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


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:59:11