RAVE
polarnav.c File Reference

Utilities for performing polar navigation. More...

#include "polarnav.h"
#include "rave_debug.h"
#include "rave_alloc.h"
#include "math.h"
#include <string.h>

Classes

struct  _PolarNavigator_t
 Represents one polar navigator. More...
 

Macros

#define DEFAULT_EQUATOR_RADIUS   6378160.0;
 Radius at the equator.
 
#define DEFAULT_POLE_RADIUS   6356780.0;
 Radius to the poles.
 

Functions

void PolarNavigator_setPoleRadius (PolarNavigator_t *polnav, double radius)
 Sets the radius to the poles.
 
double PolarNavigator_getPoleRadius (PolarNavigator_t *polnav)
 Returns the radius to the poles.
 
void PolarNavigator_setEquatorRadius (PolarNavigator_t *polnav, double radius)
 Sets the radius at the equator.
 
double PolarNavigator_getEquatorRadius (PolarNavigator_t *polnav)
 Returns the radius at the equator.
 
void PolarNavigator_setLon0 (PolarNavigator_t *polnav, double lon0)
 Sets the origin longitude.
 
double PolarNavigator_getLon0 (PolarNavigator_t *polnav)
 Returns the origin longitude.
 
void PolarNavigator_setLat0 (PolarNavigator_t *polnav, double lat0)
 Sets the origin latitude.
 
double PolarNavigator_getLat0 (PolarNavigator_t *polnav)
 Returns the origin latitude.
 
void PolarNavigator_setAlt0 (PolarNavigator_t *polnav, double alt0)
 Sets the origin altitude.
 
double PolarNavigator_getAlt0 (PolarNavigator_t *polnav)
 Returns the origin altitude.
 
void PolarNavigator_setDndh (PolarNavigator_t *polnav, double dndh)
 Sets the dndh (deflection).
 
double PolarNavigator_getDndh (PolarNavigator_t *polnav)
 Returns the dndh.
 
double PolarNavigator_getEarthRadius (PolarNavigator_t *polnav, double lat)
 Returns the earth radius (in meters) at the specified latitude.
 
double PolarNavigator_getEarthRadiusOrigin (PolarNavigator_t *polnav)
 Returns the earth radius at the origin.
 
double PolarNavigator_getDistance (PolarNavigator_t *polnav, double lat, double lon)
 Returns the distance between lon0/lat0 and the provided lon/lat coordinates.
 
void PolarNavigator_llToDa (PolarNavigator_t *polnav, double lat, double lon, double *d, double *a)
 Calculates the distance/azimuth from origin to the specified lon/lat.
 
void PolarNavigator_daToLl (PolarNavigator_t *polnav, double d, double a, double *lat, double *lon)
 Calculates the lon/lat from origin to the specified azimuth/distance.
 
void PolarNavigator_dhToRe (PolarNavigator_t *polnav, double d, double h, double *r, double *e)
 Calculates the range/elevation from the specified distance and height.
 
void PolarNavigator_deToRh (PolarNavigator_t *polnav, double d, double e, double *r, double *h)
 Calculates the range/height from the specified distance and elevation.
 
void PolarNavigator_reToDh (PolarNavigator_t *polnav, double r, double e, double *d, double *h)
 Calculates the distance/height from the specified range and elevation.
 
void PolarNavigator_ehToRd (PolarNavigator_t *polnav, double e, double h, double *r, double *d)
 Calculates the range/distance from the specified elevation and height.
 

Variables

RaveCoreObjectType PolarNavigator_TYPE
 Type definition to use when creating a rave object.
 

Detailed Description

Utilities for performing polar navigation.

Author
Anders Henja (Swedish Meteorological and Hydrological Institute, SMHI)
Date
2009-10-21

Macro Definition Documentation

◆ DEFAULT_EQUATOR_RADIUS

#define DEFAULT_EQUATOR_RADIUS   6378160.0;

Radius at the equator.

◆ DEFAULT_POLE_RADIUS

#define DEFAULT_POLE_RADIUS   6356780.0;

Radius to the poles.

Function Documentation

◆ PolarNavigator_daToLl()

void PolarNavigator_daToLl ( PolarNavigator_t * polnav,
double d,
double a,
double * lat,
double * lon )

Calculates the lon/lat from origin to the specified azimuth/distance.

Parameters
[in]polnav- the polar navigator
[in]d- the distance (in meters)
[in]a- the azimuth (in radians)
[out]lat- the latitude (in radians)
[out]lon- the longitude (in radians)

◆ PolarNavigator_deToRh()

void PolarNavigator_deToRh ( PolarNavigator_t * polnav,
double d,
double e,
double * r,
double * h )

Calculates the range/height from the specified distance and elevation.

Parameters
[in]polnav- the polar navigator
[in]d- the distance (in meters)
[in]e- the elevation (in radians)
[out]r- the range (in meters)
[out]h- the height (in meters)

◆ PolarNavigator_dhToRe()

void PolarNavigator_dhToRe ( PolarNavigator_t * polnav,
double d,
double h,
double * r,
double * e )

Calculates the range/elevation from the specified distance and height.

Parameters
[in]polnav- the polar navigator
[in]d- the distance (in meters)
[in]h- the height (in meters)
[out]r- the range (in meters)
[out]e- the elevation (in radians)

◆ PolarNavigator_ehToRd()

void PolarNavigator_ehToRd ( PolarNavigator_t * polnav,
double e,
double h,
double * r,
double * d )

Calculates the range/distance from the specified elevation and height.

Parameters
[in]polnav- the polar navigator
[in]e- the elevation (in radians)
[in]h- the height (in meters)
[out]r- the range (in meters)
[out]d- the distance (in meters)

◆ PolarNavigator_getAlt0()

double PolarNavigator_getAlt0 ( PolarNavigator_t * polnav)

Returns the origin altitude.

Parameters
[in]polnav- the polar navigator
Returns
the origin altitude (in meters)

◆ PolarNavigator_getDistance()

double PolarNavigator_getDistance ( PolarNavigator_t * polnav,
double lat,
double lon )

Returns the distance between lon0/lat0 and the provided lon/lat coordinates.

Parameters
[in]polnav- self
[in]lat- the latitude
[in]lon- the longitude
Returns
the distance in meters.

◆ PolarNavigator_getDndh()

double PolarNavigator_getDndh ( PolarNavigator_t * polnav)

Returns the dndh.

Parameters
[in]polnav- the polar navigator
Returns
the dndh

◆ PolarNavigator_getEarthRadius()

double PolarNavigator_getEarthRadius ( PolarNavigator_t * polnav,
double lat )

Returns the earth radius (in meters) at the specified latitude.

Parameters
[in]polnav- the polar navigator
[in]lat- the latitude (in radians)
Returns
the radius (in meters) at the specified latitude

◆ PolarNavigator_getEarthRadiusOrigin()

double PolarNavigator_getEarthRadiusOrigin ( PolarNavigator_t * polnav)

Returns the earth radius at the origin.

Same as calling PolarNavigator_getEarthRadius(polnav, PolarNavigator_getLat0(polnav)).

Parameters
[in]polnav- the polar navigator
Returns
the earth radius (in meters)

◆ PolarNavigator_getEquatorRadius()

double PolarNavigator_getEquatorRadius ( PolarNavigator_t * polnav)

Returns the radius at the equator.

Parameters
[in]polnav- the polar navigator
Returns
the radius at the equator (in meters)

◆ PolarNavigator_getLat0()

double PolarNavigator_getLat0 ( PolarNavigator_t * polnav)

Returns the origin latitude.

Parameters
[in]polnav- the polar navigator
Returns
the origin latitude (in radians)

◆ PolarNavigator_getLon0()

double PolarNavigator_getLon0 ( PolarNavigator_t * polnav)

Returns the origin longitude.

Parameters
[in]polnav- the polar navigator
Returns
the origin longitude (in radians)

◆ PolarNavigator_getPoleRadius()

double PolarNavigator_getPoleRadius ( PolarNavigator_t * polnav)

Returns the radius to the poles.

Parameters
[in]polnav- the polar navigator
Returns
the radius to the poles (in meters)

◆ PolarNavigator_llToDa()

void PolarNavigator_llToDa ( PolarNavigator_t * polnav,
double lat,
double lon,
double * d,
double * a )

Calculates the distance/azimuth from origin to the specified lon/lat.

Parameters
[in]polnav- the polar navigator
[in]lat- the destination latitude (in radians)
[in]lon- the destination longitude (in radians)
[out]d- the distance (in meters)
[out]a- the azimuth (in radians)

◆ PolarNavigator_reToDh()

void PolarNavigator_reToDh ( PolarNavigator_t * polnav,
double r,
double e,
double * d,
double * h )

Calculates the distance/height from the specified range and elevation.

Parameters
[in]polnav- the polar navigator
[in]r- the range (in meters)
[in]e- the elevation (in radians)
[out]d- the distance (in meters)
[out]h- the height (in meters)

◆ PolarNavigator_setAlt0()

void PolarNavigator_setAlt0 ( PolarNavigator_t * polnav,
double alt0 )

Sets the origin altitude.

Parameters
[in]polnav- the polar navigator
[in]alt0- the origin altitude (in meters)

◆ PolarNavigator_setDndh()

void PolarNavigator_setDndh ( PolarNavigator_t * polnav,
double dndh )

Sets the dndh (deflection).

Parameters
[in]polnav- the polar navigator
[in]dndh- the dndh value

◆ PolarNavigator_setEquatorRadius()

void PolarNavigator_setEquatorRadius ( PolarNavigator_t * polnav,
double radius )

Sets the radius at the equator.

Parameters
[in]polnav- the polar navigator
[in]radius- the radius at the equator (in meters)

◆ PolarNavigator_setLat0()

void PolarNavigator_setLat0 ( PolarNavigator_t * polnav,
double lat0 )

Sets the origin latitude.

Parameters
[in]polnav- the polar navigator
[in]lat0- the origin latitude (in radians)

◆ PolarNavigator_setLon0()

void PolarNavigator_setLon0 ( PolarNavigator_t * polnav,
double lon0 )

Sets the origin longitude.

Parameters
[in]polnav- the polar navigator
[in]lon0- the origin longitude (in radians)

◆ PolarNavigator_setPoleRadius()

void PolarNavigator_setPoleRadius ( PolarNavigator_t * polnav,
double radius )

Sets the radius to the poles.

Parameters
[in]polnav- the polar navigator
[in]radius- the radius to the poles (in meters)

Variable Documentation

◆ PolarNavigator_TYPE

RaveCoreObjectType PolarNavigator_TYPE
Initial value:
= {
"PolarNavigator",
PolarNavigator_constructor,
PolarNavigator_destructor,
PolarNavigator_copyconstructor
}
struct _PolarNavigator_t PolarNavigator_t
Defines a polar navigator.
Definition polarnav.h:46

Type definition to use when creating a rave object.