USML
wposition Class Reference
Collaboration diagram for wposition:

Detailed Description

World location in geodetic earth coordinates (latitude, longitude, and altitude).

WGS-84 is used to define a spherical earth system that approximates the earth's radius of curvature across the area of operations. Higher order geoid schemes (such as EGM-96) are assumed to have minimal impact on the local radius of curvature.

The WGS-84 latitude is defined by the angle made between the normal vector on the earth's reference ellipse and the equatorial plane. When traced back to the axis of rotation, this surface normal also passes through the center of curvature.

At the equator, the earth's radius of curvature is equal to the WGS-84 semi-major axis value of 6378137.0 meters. As you approach the poles, the radius of curvature gets larger (the earth get flatter) even though the actual radius of the earth gets smaller. The center of curvature, which is also the center of this model's spherical earth coordinate system, lies on the axis of rotation on the opposite side of the equatorial plane from the area of operations.

References:
WGS 84 IMPLEMENTATION MANUAL, Version 2.4, 1998. See http://www.dqts.net/wgs84.htm for more information.

Constructor & Destructor Documentation

wposition ( unsigned  rows = 1,
unsigned  cols = 1,
double  latitude = 0.0,
double  longitude = 0.0,
double  altitude = 0.0 
)

Constructs a matrix of wpositions.

Initializes each wposition to the surface of the earth at a latitude/longitude of (0,0).

Parameters
rowsNumber of rows
colsNumber of columns
latitudeInitial latitude
longitudeInitial longitude
altitudeInitial altitude

Initializes each wposition to the center of the earth.

wposition ( const wvector other)
inline

Constructs a new wposition as a copy of an existing wposition.

Accepts either an actual wposition, or one of its superclasses.

Parameters
otherwposition to be copied.
wposition ( const vector_expression< E1 > &  latitude,
const vector_expression< E2 > &  longitude,
double  altitude = 0.0 
)
inline

Constructs a mesh of lat/long wpositions.

Each row of the mesh corresponds to a single latitude from the input list. Each column of the mesh corresponds to a single longitude from the input list. A common altitude is copied to every point in the mesh.

Parameters
latitudeList of latitudes
longitudeList of longitudes
altitudeInitial altitude

Member Function Documentation

matrix<double> altitude ( ) const
inline

Retrieves the altitude above the mean sea level.

Acts as a convenient transformation of the "Rho" property.

Returns
Altitude in meters returned as a reference to a temporary varible. The calling routine should make a copy of this as soon as possible.
void altitude ( const matrix_expression< E > &  altitude,
bool  no_alias = true 
)
inline

Defines the altitude above the mean sea level.

Acts as a convenient transformation of the "Rho" property.

Parameters
altitudeAltitude in meters.
no_aliasUse uBLAS noalias() assignment speed-up if true.
double altitude ( unsigned  row,
unsigned  col 
) const
inline

Retrieves ia single altitude above the mean sea level.

Acts as a convenient transformation of the "Rho" property.

Parameters
rowRow index of the element to access.
colColumn index of the element to access.
Returns
Altitude in meters.
void altitude ( unsigned  row,
unsigned  col,
double  altitude 
)
inline

Defines a single altitude above the mean sea level.

Acts as a convenient transformation of the "Rho" property.

Parameters
rowRow index of the element to access.
colColumn index of the element to access.
altitudeAltitude in meters.
void compute_earth_radius ( double  latitude)
static

Compute the average radius of curvature as a combination of the meridonal radius (rm) and the prime vertical radius (rv).

Compute the radius of the prime vertical using the WGS-84 formula.

Uses WGS-84 parameters for the semi-major axis and flatting of the Earth.

     a = 6378137.0 
     f = 1 / 298.257223563
     e^2 = f ( 2 - f ) 
     w^2 = 1 - e^2 sin^2(latitude)
     rm = a * (1-e^2) / (w*w*w) ;
     rv = a / w
     R = sqrt( rm rv )

Results are stored in the earth_radius static variable.

Parameters
latitudeLatitude component in degrees.
References:
J. G. Dworski, J. A. Mercer, "Hamiltonian 3-D Ray Tracing in the Oceanic Waveguide on the Ellipsoidal Earth", ARL-UW TR8929 (Dec 1990)
matrix<double> latitude ( ) const
inline

Retrieves the latitude component of geodetic earth coordinates.

Acts as a convenient transformation of the "Theta" property.

Returns
Latitude component in degrees returned as a reference to a temporary varible. The calling routine should make a copy of this as soon as possible.
void latitude ( const matrix_expression< E > &  latitude,
bool  no_alias = true 
)
inline

Defines the latitude component of geodetic earth coordinates.

Acts as a convenient transformation of the "Theta" property.

Parameters
latitudeLatitude component in degrees.
no_aliasUse uBLAS noalias() assignment speed-up if true.
double latitude ( unsigned  row,
unsigned  col 
) const
inline

Retrieves a single latitude component of geodetic earth coordinates.

Acts as a convenient transformation of the "Theta" property.

Parameters
rowRow index of the element to access.
colColumn index of the element to access.
Returns
Latitude component in degrees.
void latitude ( unsigned  row,
unsigned  col,
double  latitude 
)
inline

Defines a single latitude component of geodetic earth coordinates.

Acts as a convenient transformation of the "Theta" property.

Parameters
rowRow index of the element to access.
colColumn index of the element to access.
latitudeLatitude component in degrees.
matrix<double> longitude ( ) const
inline

Retrieves the longitude component of geodetic earth coordinates.

Acts as a convenient transformation of the "theta" property.

Returns
Longitude component in degrees returned as a reference to a temporary varible. The calling routine should make a copy of this as soon as possible.
void longitude ( const matrix_expression< E > &  longitude,
bool  no_alias = true 
)
inline

Defines the longitude component of geodetic earth coordinates.

Acts as a convenient transformation of the "theta" property.

Parameters
longitudeLongitude component in degrees.
no_aliasUse uBLAS noalias() assignment speed-up if true.
double longitude ( unsigned  row,
unsigned  col 
) const
inline

Retrieves a single longitude component of geodetic earth coordinates.

Acts as a convenient transformation of the "theta" property.

Parameters
rowRow index of the element to access.
colColumn index of the element to access.
Returns
Longitude component in degrees.
void longitude ( unsigned  row,
unsigned  col,
double  longitude 
)
inline

Defines a single longitude component of geodetic earth coordinates.

Acts as a convenient transformation of the "theta" property.

Parameters
rowRow index of the element to access.
colColumn index of the element to access.
longitudeLongitude component in degrees.

Member Data Documentation

double earth_radius = 6378101.030201019
static

Local radius of curvature in the area of operations.

Default value is the WGS-84 curvature at a latitude of 45 degrees (nominally 6378101.030201019).