.NET wrapper for GeographicLib::GravityCircle. More...
#include <NETGeographicLib/GravityCircle.h>
Public Member Functions | |
GravityCircle (const GeographicLib::GravityCircle &gc) | |
~GravityCircle () | |
Compute the gravitational field | |
double | Gravity (double lon,[System::Runtime::InteropServices::Out] double% gx,[System::Runtime::InteropServices::Out] double% gy,[System::Runtime::InteropServices::Out] double% gz) |
double | Disturbance (double lon,[System::Runtime::InteropServices::Out] double% deltax,[System::Runtime::InteropServices::Out] double% deltay,[System::Runtime::InteropServices::Out] double% deltaz) |
double | GeoidHeight (double lon) |
void | SphericalAnomaly (double lon,[System::Runtime::InteropServices::Out] double% Dg01,[System::Runtime::InteropServices::Out] double% xi,[System::Runtime::InteropServices::Out] double% eta) |
double | W (double lon,[System::Runtime::InteropServices::Out] double% gX,[System::Runtime::InteropServices::Out] double% gY,[System::Runtime::InteropServices::Out] double% gZ) |
double | V (double lon,[System::Runtime::InteropServices::Out] double% GX,[System::Runtime::InteropServices::Out] double% GY,[System::Runtime::InteropServices::Out] double% GZ) |
double | T (double lon,[System::Runtime::InteropServices::Out] double% deltaX,[System::Runtime::InteropServices::Out] double% deltaY,[System::Runtime::InteropServices::Out] double% deltaZ) |
double | T (double lon) |
Inspector functions | |
| |
bool | Init [get] |
double | MajorRadius [get] |
double | Flattening [get] |
double | Latitude [get] |
double | Height [get] |
GravityModel::Mask | Capabilities () |
bool | Capabilities (GravityModel::Mask testcaps) |
.NET wrapper for GeographicLib::GravityCircle.
This class allows .NET applications to access GeographicLib::GravityCircle.
Evaluate the earth's gravity field on a circle of constant height and latitude. This uses a CircularEngine to pre-evaluate the inner sum of the spherical harmonic sum, allowing the values of the field at several different longitudes to be evaluated rapidly.
Use GravityModel::Circle to create a GravityCircle object. (The constructor for this class is for internal use only.)
C# Example:
using System; using NETGeographicLib; namespace example_GravityCircle { class Program { static void Main(string[] args) { try { GravityModel grav = new GravityModel("egm96", ""); double lat = 27.99, lon0 = 86.93, h = 8820; // Mt Everest { // Slow method of evaluating the values at several points on a circle of // latitude. for (int i = -5; i <= 5; ++i) { double lon = lon0 + i * 0.2; double gx, gy, gz; grav.Gravity(lat, lon, h, out gx, out gy, out gz); Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz)); } } { // Fast method of evaluating the values at several points on a circle of // latitude using GravityCircle. GravityCircle circ = grav.Circle(lat, h, GravityModel.Mask.ALL); for (int i = -5; i <= 5; ++i) { double lon = lon0 + i * 0.2; double gx, gy, gz; circ.Gravity(lon, out gx, out gy, out gz); Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz)); } } } 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 ^> ^/*args*/) { try { GravityModel^ grav = gcnew GravityModel("egm96", ""); double lat = 27.99, lon0 = 86.93, h = 8820; // Mt Everest { // Slow method of evaluating the values at several points on a circle of // latitude. for (int i = -5; i <= 5; ++i) { double lon = lon0 + i * 0.2; double gx, gy, gz; grav->Gravity(lat, lon, h, gx, gy, gz); Console::WriteLine(String::Format("{0} {1} {2} {3}", lon, gx, gy, gz)); } } { // Fast method of evaluating the values at several points on a circle of // latitude using GravityCircle. GravityCircle^ circ = grav->Circle(lat, h, GravityModel::Mask::ALL); for (int i = -5; i <= 5; ++i) { double lon = lon0 + i * 0.2; double gx, gy, gz; circ->Gravity(lon, gx, gy, gz); Console::WriteLine(String::Format("{0} {1} {2} {3}", lon, gx, gy, gz)); } } } catch (GeographicErr^ e) { Console::WriteLine(String::Format("Caught exception: {0}", e->Message)); return -1; } return 0; }
Visual Basic Example:
Imports NETGeographicLib Module example_GravityCircle Sub Main() Try Dim grav As GravityModel = New GravityModel("egm96", "") Dim lat As Double = 27.99, lon0 = 86.93, h = 8820 ' Mt Everest ' Slow method of evaluating the values at several points on a circle of ' latitude. For i As Integer = -5 To 5 Dim lon As Double = lon0 + i * 0.2 Dim gx, gy, gz As Double grav.Gravity(lat, lon, h, gx, gy, gz) Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz)) Next ' Fast method of evaluating the values at several points on a circle of ' latitude using GravityCircle. Dim circ As GravityCircle = grav.Circle(lat, h, GravityModel.Mask.ALL) For i As Integer = -5 To 5 Dim lon As Double = lon0 + i * 0.2 Dim gx, gy, gz As Double circ.Gravity(lon, gx, gy, gz) Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz)) Next Catch ex As GeographicErr Console.WriteLine(String.Format("Caught exception: {0}", ex.Message)) End Try End Sub End Module
INTERFACE DIFFERENCES:
The following functions are implemented as properties: Init, MajorRadius, Flattening, Latitude, and Height.
The Capabilities functions accept and return the "capabilities mask" as a NETGeographicLib::GravityModel::Mask rather than an unsigned.
Definition at line 42 of file GravityCircle.h.
NETGeographicLib::GravityCircle::GravityCircle | ( | const GeographicLib::GravityCircle & | gc | ) |
A constructor that is initialized from an unmanaged GeographicLib::GravityCircle. For internal use only. Developers should use GravityModel::Circle to create a GavityCircle object.
Referenced by ~GravityCircle().
NETGeographicLib::GravityCircle::~GravityCircle | ( | ) | [inline] |
The destructor calls the finalizer.
Definition at line 61 of file GravityCircle.h.
References GravityCircle().
double NETGeographicLib::GravityCircle::Gravity | ( | double | lon, | |
[System::Runtime::InteropServices::Out] double% | gx, | |||
[System::Runtime::InteropServices::Out] double% | gy, | |||
[System::Runtime::InteropServices::Out] double% | gz | |||
) |
Evaluate the gravity.
[in] | lon | the geographic longitude (degrees). |
[out] | gx | the easterly component of the acceleration (m s2). |
[out] | gy | the northerly component of the acceleration (m s2). |
[out] | gz | the upward component of the acceleration (m s2); this is usually negative. |
The function includes the effects of the earth's rotation.
double NETGeographicLib::GravityCircle::Disturbance | ( | double | lon, | |
[System::Runtime::InteropServices::Out] double% | deltax, | |||
[System::Runtime::InteropServices::Out] double% | deltay, | |||
[System::Runtime::InteropServices::Out] double% | deltaz | |||
) |
Evaluate the gravity disturbance vector.
[in] | lon | the geographic longitude (degrees). |
[out] | deltax | the easterly component of the disturbance vector (m s2). |
[out] | deltay | the northerly component of the disturbance vector (m s2). |
[out] | deltaz | the upward component of the disturbance vector (m s2). |
double NETGeographicLib::GravityCircle::GeoidHeight | ( | double | lon | ) |
Evaluate the geoid height.
[in] | lon | the geographic longitude (degrees). |
Some approximations are made in computing the geoid height so that the results of the NGA codes are reproduced accurately. Details are given in gravitygeoid.
void NETGeographicLib::GravityCircle::SphericalAnomaly | ( | double | lon, | |
[System::Runtime::InteropServices::Out] double% | Dg01, | |||
[System::Runtime::InteropServices::Out] double% | xi, | |||
[System::Runtime::InteropServices::Out] double% | eta | |||
) |
Evaluate the components of the gravity anomaly vector using the spherical approximation.
[in] | lon | the geographic longitude (degrees). |
[out] | Dg01 | the gravity anomaly (m s2). |
[out] | xi | the northerly component of the deflection of the vertical (degrees). |
[out] | eta | the easterly component of the deflection of the vertical (degrees). |
The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used so that the results of the NGA codes are reproduced accurately. approximations used here. Details are given in gravitygeoid.
double NETGeographicLib::GravityCircle::W | ( | double | lon, | |
[System::Runtime::InteropServices::Out] double% | gX, | |||
[System::Runtime::InteropServices::Out] double% | gY, | |||
[System::Runtime::InteropServices::Out] double% | gZ | |||
) |
Evaluate the components of the acceleration due to gravity and the centrifugal acceleration in geocentric coordinates.
[in] | lon | the geographic longitude (degrees). |
[out] | gX | the X component of the acceleration (m s2). |
[out] | gY | the Y component of the acceleration (m s2). |
[out] | gZ | the Z component of the acceleration (m s2). |
double NETGeographicLib::GravityCircle::V | ( | double | lon, | |
[System::Runtime::InteropServices::Out] double% | GX, | |||
[System::Runtime::InteropServices::Out] double% | GY, | |||
[System::Runtime::InteropServices::Out] double% | GZ | |||
) |
Evaluate the components of the acceleration due to gravity in geocentric coordinates.
[in] | lon | the geographic longitude (degrees). |
[out] | GX | the X component of the acceleration (m s2). |
[out] | GY | the Y component of the acceleration (m s2). |
[out] | GZ | the Z component of the acceleration (m s2). |
double NETGeographicLib::GravityCircle::T | ( | double | lon, | |
[System::Runtime::InteropServices::Out] double% | deltaX, | |||
[System::Runtime::InteropServices::Out] double% | deltaY, | |||
[System::Runtime::InteropServices::Out] double% | deltaZ | |||
) |
Evaluate the components of the gravity disturbance in geocentric coordinates.
[in] | lon | the geographic longitude (degrees). |
[out] | deltaX | the X component of the gravity disturbance (m s2). |
[out] | deltaY | the Y component of the gravity disturbance (m s2). |
[out] | deltaZ | the Z component of the gravity disturbance (m s2). |
double NETGeographicLib::GravityCircle::T | ( | double | lon | ) |
Evaluate disturbing potential in geocentric coordinates.
[in] | lon | the geographic longitude (degrees). |
GravityModel::Mask NETGeographicLib::GravityCircle::Capabilities | ( | ) |
bool NETGeographicLib::GravityCircle::Capabilities | ( | GravityModel::Mask | testcaps | ) |
[in] | testcaps | a set of bitor'ed GeodesicLine::mask values. |
bool NETGeographicLib::GravityCircle::Init [get] |
Definition at line 210 of file GravityCircle.h.
double NETGeographicLib::GravityCircle::MajorRadius [get] |
Definition at line 219 of file GravityCircle.h.
double NETGeographicLib::GravityCircle::Flattening [get] |
Definition at line 227 of file GravityCircle.h.
double NETGeographicLib::GravityCircle::Latitude [get] |
Definition at line 234 of file GravityCircle.h.
double NETGeographicLib::GravityCircle::Height [get] |
Definition at line 241 of file GravityCircle.h.