NETGeographicLib::Ellipsoid Class Reference
.NET wrapper for GeographicLib::Ellipsoid.
More...
#include <NETGeographicLib/Ellipsoid.h>
List of all members.
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;
using NETGeographicLib;
namespace example_Ellipsoid
{
class Program
{
static void Main(string[] args)
{
try {
Ellipsoid wgs84 = new Ellipsoid( Constants.WGS84.MajorRadius,
Constants.WGS84.Flattening);
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:
using namespace System;
using namespace NETGeographicLib;
int main(array<System::String ^> ^)
{
try {
Ellipsoid^ wgs84 = gcnew Ellipsoid( Constants::WGS84::MajorRadius,
Constants::WGS84::Flattening );
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 ) );
return -1;
}
return 0;
}
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
NETGeographicLib::Ellipsoid::Ellipsoid |
( |
|
) |
|
Constructor for a WGS84 ellipsoid
Referenced by ~Ellipsoid().
NETGeographicLib::Ellipsoid::Ellipsoid |
( |
double |
a, |
|
|
double |
f | |
|
) |
| | |
Constructor for a ellipsoid with
- Parameters:
-
[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. |
- Exceptions:
-
NETGeographicLib::Ellipsoid::~Ellipsoid |
( |
|
) |
[inline] |
Member Function Documentation
double NETGeographicLib::Ellipsoid::ParametricLatitude |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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
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].
double NETGeographicLib::Ellipsoid::InverseParametricLatitude |
( |
double |
beta |
) |
|
- Parameters:
-
[in] | beta | the 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].
double NETGeographicLib::Ellipsoid::GeocentricLatitude |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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].
double NETGeographicLib::Ellipsoid::InverseGeocentricLatitude |
( |
double |
theta |
) |
|
- Parameters:
-
[in] | theta | the 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].
double NETGeographicLib::Ellipsoid::RectifyingLatitude |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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].
double NETGeographicLib::Ellipsoid::InverseRectifyingLatitude |
( |
double |
mu |
) |
|
- Parameters:
-
[in] | mu | the 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].
double NETGeographicLib::Ellipsoid::AuthalicLatitude |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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].
double NETGeographicLib::Ellipsoid::InverseAuthalicLatitude |
( |
double |
xi |
) |
|
- Parameters:
-
[in] | xi | the 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].
double NETGeographicLib::Ellipsoid::ConformalLatitude |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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].
double NETGeographicLib::Ellipsoid::InverseConformalLatitude |
( |
double |
chi |
) |
|
- Parameters:
-
[in] | chi | the 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].
double NETGeographicLib::Ellipsoid::IsometricLatitude |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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 = sinh1 tan .
must lie in the range [90, 90]; the result is undefined if this condition does not hold.
double NETGeographicLib::Ellipsoid::InverseIsometricLatitude |
( |
double |
psi |
) |
|
- Parameters:
-
[in] | psi | the isometric latitude (degrees). |
- Returns:
- the geographic latitude (degrees).
The returned value lies in [90, 90].
double NETGeographicLib::Ellipsoid::CircleRadius |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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.
double NETGeographicLib::Ellipsoid::CircleHeight |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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.
double NETGeographicLib::Ellipsoid::MeridianDistance |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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.
double NETGeographicLib::Ellipsoid::MeridionalCurvatureRadius |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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.
double NETGeographicLib::Ellipsoid::TransverseCurvatureRadius |
( |
double |
phi |
) |
|
- Parameters:
-
[in] | phi | the 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.
double NETGeographicLib::Ellipsoid::NormalCurvatureRadius |
( |
double |
phi, |
|
|
double |
azi | |
|
) |
| | |
- Parameters:
-
[in] | phi | the geographic latitude (degrees). |
[in] | azi | the 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] and azi must lie in the range [540, 540); the result is undefined if either of conditions does not hold.
static double NETGeographicLib::Ellipsoid::SecondFlatteningToFlattening |
( |
double |
fp |
) |
[static] |
- Parameters:
-
[in] | fp | = f ' = (a b) / b, the second flattening. |
- Returns:
- f = (a b) / a, the flattening.
f ' should lie in (1, ). The returned value f lies in (, 1).
static double NETGeographicLib::Ellipsoid::FlatteningToSecondFlattening |
( |
double |
f |
) |
[static] |
- Parameters:
-
[in] | f | = (a b) / a, the flattening. |
- Returns:
- f ' = (a b) / b, the second flattening.
f should lie in (, 1). The returned value f ' lies in (1, ).
static double NETGeographicLib::Ellipsoid::ThirdFlatteningToFlattening |
( |
double |
n |
) |
[static] |
- Parameters:
-
[in] | n | = (a b) / (a + b), the third flattening. |
- Returns:
- f = (a b) / a, the flattening.
n should lie in (1, 1). The returned value f lies in (, 1).
static double NETGeographicLib::Ellipsoid::FlatteningToThirdFlattening |
( |
double |
f |
) |
[static] |
- Parameters:
-
[in] | f | = (a b) / a, the flattening. |
- Returns:
- n = (a b) / (a + b), the third flattening.
f should lie in (, 1). The returned value n lies in (1, 1).
static double NETGeographicLib::Ellipsoid::EccentricitySqToFlattening |
( |
double |
e2 |
) |
[static] |
- Parameters:
-
[in] | e2 | = e2 = (a2 b2) / a2, the eccentricity squared. |
- Returns:
- f = (a b) / a, the flattening.
e2 should lie in (, 1). The returned value f lies in (, 1).
static double NETGeographicLib::Ellipsoid::FlatteningToEccentricitySq |
( |
double |
f |
) |
[static] |
- Parameters:
-
[in] | f | = (a b) / a, the flattening. |
- Returns:
- e2 = (a2 b2) / a2, the eccentricity squared.
f should lie in (, 1). The returned value e2 lies in (, 1).
static double NETGeographicLib::Ellipsoid::SecondEccentricitySqToFlattening |
( |
double |
ep2 |
) |
[static] |
- Parameters:
-
[in] | ep2 | = e' 2 = (a2 b2) / b2, the second eccentricity squared. |
- Returns:
- f = (a b) / a, the flattening.
e' 2 should lie in (1, ). The returned value f lies in (, 1).
static double NETGeographicLib::Ellipsoid::FlatteningToSecondEccentricitySq |
( |
double |
f |
) |
[static] |
- Parameters:
-
[in] | f | = (a b) / a, the flattening. |
- Returns:
- e' 2 = (a2 b2) / b2, the second eccentricity squared.
f should lie in (, 1). The returned value e' 2 lies in (1, ).
static double NETGeographicLib::Ellipsoid::ThirdEccentricitySqToFlattening |
( |
double |
epp2 |
) |
[static] |
- Parameters:
-
[in] | epp2 | = e'' 2 = (a2 b2) / (a2 + b2), the third eccentricity squared. |
- Returns:
- f = (a b) / a, the flattening.
e'' 2 should lie in (1, 1). The returned value f lies in (, 1).
static double NETGeographicLib::Ellipsoid::FlatteningToThirdEccentricitySq |
( |
double |
f |
) |
[static] |
- Parameters:
-
[in] | f | = (a b) / a, the flattening. |
- Returns:
- e'' 2 = (a2 b2) / (a2 + b2), the third eccentricity squared.
f should lie in (, 1). The returned value e'' 2 lies in (1, 1).
Property Documentation
double NETGeographicLib::Ellipsoid::MajorRadius [get] |
- Returns:
- a the equatorial radius of the ellipsoid (meters). This is the value used in the constructor.
Definition at line 91 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::MinorRadius [get] |
- Returns:
- b the polar semi-axis (meters).
Definition at line 96 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::QuarterMeridian [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 103 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::Area [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 110 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::Volume [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 117 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::Flattening [get] |
- Returns:
- f = (a b) / 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 130 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::SecondFlattening [get] |
- Returns:
- f ' = (a b) / b, the second flattening of the ellipsoid. This is zero, positive, or negative for a sphere, oblate ellipsoid, or prolate ellipsoid.
Definition at line 137 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::ThirdFlattening [get] |
- Returns:
- n = (a b) / (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 144 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::EccentricitySq [get] |
- Returns:
- e2 = (a2 b2) / a2, the eccentricity squared of the ellipsoid. This is zero, positive, or negative for a sphere, oblate ellipsoid, or prolate ellipsoid.
Definition at line 152 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::SecondEccentricitySq [get] |
- Returns:
- e' 2 = (a2 b2) / 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 160 of file Ellipsoid.h.
double NETGeographicLib::Ellipsoid::ThirdEccentricitySq [get] |
- Returns:
- e'' 2 = (a2 b2) / (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 169 of file Ellipsoid.h.
The documentation for this class was generated from the following file: