.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.
1.6.1