wposition Class Reference
[World Coordinates]

Collaboration diagram for wposition:
Collaboration graph
[legend]

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 ( size_t  rows = 1,
size_t  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:
rows Number of rows
cols Number of columns
latitude Initial latitude
longitude Initial longitude
altitude Initial 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:
other wposition 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:
latitude List of latitudes
longitude List of longitudes
altitude Initial altitude

Member Function Documentation

void altitude ( size_t  row,
size_t  col,
double  altitude 
) [inline]

Defines a single altitude above the mean sea level.

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

Parameters:
row Row index of the element to access.
col Column index of the element to access.
altitude Altitude in meters.
double altitude ( size_t  row,
size_t  col 
) const [inline]

Retrieves ia single altitude above the mean sea level.

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

Parameters:
row Row index of the element to access.
col Column index of the element to access.
Returns:
Altitude in meters.
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:
altitude Altitude in meters.
no_alias Use uBLAS noalias() assignment speed-up if true.
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 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:
latitude Latitude 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)
void latitude ( size_t  row,
size_t  col,
double  latitude 
) [inline]

Defines a single latitude component of geodetic earth coordinates.

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

Parameters:
row Row index of the element to access.
col Column index of the element to access.
latitude Latitude component in degrees.
double latitude ( size_t  row,
size_t  col 
) const [inline]

Retrieves a single latitude component of geodetic earth coordinates.

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

Parameters:
row Row index of the element to access.
col Column index of the element to access.
Returns:
Latitude component in degrees.
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:
latitude Latitude component in degrees.
no_alias Use uBLAS noalias() assignment speed-up if true.
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 longitude ( size_t  row,
size_t  col,
double  longitude 
) [inline]

Defines a single longitude component of geodetic earth coordinates.

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

Parameters:
row Row index of the element to access.
col Column index of the element to access.
longitude Longitude component in degrees.
double longitude ( size_t  row,
size_t  col 
) const [inline]

Retrieves a single longitude component of geodetic earth coordinates.

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

Parameters:
row Row index of the element to access.
col Column index of the element to access.
Returns:
Longitude component in degrees.
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:
longitude Longitude component in degrees.
no_alias Use uBLAS noalias() assignment speed-up if true.
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.

Member Data Documentation

double earth_radius = 6371000.0 [static]

Radius of curvature, FAI standard for aviation records.

References:
Aviation Formulary, V1.46, 2011. See http://williams.best.vwh.net/avform.htm for more information.

Generated on 4 May 2015 for USML by  doxygen 1.6.1