LRAUV  revA
Location Class Reference

Wraps a pair of double precision (8-byte) floating point numbers and units for storage in a DataElement. More...

#include <Location.h>

Inheritance diagram for Location:
Collaboration diagram for Location:

Public Member Functions

 Location (const Unit &unit)
 Default constructor. More...
 
 Location (const Unit &unit, const double &lat, const double &lon, bool scaleValues=true)
 Multi value constructior. More...
 
 Location (const Location &value)
 Copy Constructor. More...
 
virtual ~Location ()
 Destructor. More...
 
const double getLat (const Unit &unit) const
 Override new. More...
 
const double getLon (const Unit &unit) const
 
void setLat (const Unit &unit, const double &lat)
 
void setLon (const Unit &unit, const double &lat)
 
Locationcopy () const
 Return a pointer to a new copy. More...
 
virtual bool copyTo (const Unit &unit, unsigned char &assignTo) const
 Copy value to unsigned char. More...
 
virtual bool copyTo (const Unit &unit, float &assignTo) const
 Copy value to float. More...
 
virtual bool copyTo (const Unit &unit, double &assignTo) const
 Copy value to double. More...
 
virtual bool copyTo (const Unit &unit, double &assignTo, unsigned int dim) const
 Copy n-dimensional value to double. More...
 
virtual bool copyTo (const Unit &unit, int &assignTo) const
 Copy value to unsigned int. More...
 
bool setFrom (const Unit &unit, unsigned char value)
 set from unsigned char value More...
 
bool setFrom (const Unit &unit, double value)
 set from double value More...
 
bool setFrom (const Unit &unit, float value)
 set from float value More...
 
bool setFrom (const Unit &unit, int value)
 set int value More...
 
bool setFrom (const DataValue &value)
 set DataValue value More...
 
Str toString (const Unit &unit) const
 
Locationoperator= (const Location &rhs)
 
Locationoperator+= (const Location &rhs)
 
Locationoperator-= (const Location &rhs)
 
const Location operator+ (const Location &rhs) const
 
const Location operator- (const Location &rhs) const
 
bool isNan () const
 
double getBearing (const double &latitude, const double &longitude) const
 
double getBearing (const Location &location1) const
 
void calcVector (const Location &location1, double &toEast, double &toNorth) const
 
double getDistance (const double &latitude, const double &longitude) const
 
double getDistance (const Location &location1) const
 
double getDistanceFast (const Location &location1) const
 
void atBearing (const double bearing, const double distance)
 
virtual double * getPtr1d ()
 Implement abstract I1D method Note that Location, when accessed via I1D methods, returns RADIANS. More...
 
virtual int getM () const
 Implement abstract I2D method. More...
 
- Public Member Functions inherited from I1D< double >
virtual ~I1D ()
 

Static Public Member Functions

static double GetBearing (const double &latitude0, const double &longitude0, const double &latitude1, const double &longitude1)
 
static void CalcVector (const double &lat0, const double &lon0, const double &lat1, const double &lon1, double &toEast, double &toNorth)
 
static double GetDistance (const double &latitude0, const double &longitude0, const double &latitude1, const double &longitude1)
 
static double GetDistanceFast (const double &latitude0, const double &longitude0, const double &latitude1, const double &longitude1)
 
static void AtBearing (const float bearing, const float distance, double &lat, double &lon)
 
static void AtBearingEllipsoid (const float bearing, const float distance, double &lat, double &lon)
 Calculates destination point given start point lat/long, bearing & distance, using Vincenty inverse formula for ellipsoids. More...
 
static double NorthingsDelta (const double startLat, const float northingsDelta)
 
static double EastingsDelta (const double startLat, const double startLon, const float eastingsDelta)
 
static void Delta (double &lat, double &lon, double northings, double eastings)
 
static double HavSin (double angle)
 
- Static Public Member Functions inherited from I1D< double >
static double * New1D (int m, bool extra=false)
 
static void Delete1D (double *array)
 

Static Public Attributes

static const double EARTH_RADIUS = 6371000.0
 
static const double EARTH_RADIUS_INVERTED = 1.0 / 6371000.0
 

Protected Member Functions

 Location ()
 Protected Empty constructor for use by DataEntry class. More...
 
- Protected Member Functions inherited from I1D< double >
 I1D ()
 
 I1D (const I1D &)
 

Protected Attributes

double value_ [2]
 
double & lat_
 Latitude, in radians north. More...
 
double & lon_
 Longitude, in radians east. More...
 

Detailed Description

Wraps a pair of double precision (8-byte) floating point numbers and units for storage in a DataElement.

(Storage is in the most canonical form of the specified unit). Provides methods for reading and writing the value to and from other DataValues, performing unit conversions as needed.

Location objects are serialized as a pair of 4-byte single precision floating point numbers by casting both numbers to single-precision floating point before storage.

Note: since these DataValues are created and destructed frequently, the new and delete operators have been overridden, so that objects can be re-used as needed.

Location::MallocRing_ stores deleted objects.

Constructor & Destructor Documentation

Location::Location ( const Unit unit)

Default constructor.

Default unit constructor.

References value_.

Location::Location ( const Unit unit,
const double &  lat,
const double &  lon,
bool  scaleValues = true 
)

Multi value constructior.

Multi value unit constructior.

References Unit::getSI(), and value_.

Location::Location ( const Location value)

Copy Constructor.

References lat_, lon_, and value_.

virtual Location::~Location ( )
inlinevirtual

Destructor.

Location::Location ( )
protected

Protected Empty constructor for use by DataEntry class.

Protected Empty constructor for use bya DataEntry class.

References value_.

Referenced by copy(), operator+(), and operator-().

Member Function Documentation

void Location::atBearing ( const double  bearing,
const double  distance 
)

References AtBearing(), lat_, and lon_.

void Location::AtBearingEllipsoid ( const float  brng,
const float  dist,
double &  lat1,
double &  lon1 
)
static

Calculates destination point given start point lat/long, bearing & distance, using Vincenty inverse formula for ellipsoids.

Adapted from: http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html

References AuvMath::ModPi().

void Location::CalcVector ( const double &  lat0,
const double &  lon0,
const double &  lat1,
const double &  lon1,
double &  toEast,
double &  toNorth 
)
static

References EARTH_RADIUS.

Referenced by calcVector().

void Location::calcVector ( const Location location1,
double &  toEast,
double &  toNorth 
) const

References CalcVector(), lat_, and lon_.

Referenced by HFRadarModelPoint::travelTime().

Location * Location::copy ( ) const

Return a pointer to a new copy.

References Location().

virtual bool Location::copyTo ( const Unit unit,
unsigned char &  assignTo 
) const
inlinevirtual

Copy value to unsigned char.

virtual bool Location::copyTo ( const Unit unit,
float &  assignTo 
) const
inlinevirtual

Copy value to float.

virtual bool Location::copyTo ( const Unit unit,
double &  assignTo 
) const
inlinevirtual

Copy value to double.

bool Location::copyTo ( const Unit unit,
double &  assignTo,
unsigned int  dim 
) const
virtual

Copy n-dimensional value to double.

References getLat(), and getLon().

virtual bool Location::copyTo ( const Unit unit,
int &  assignTo 
) const
inlinevirtual

Copy value to unsigned int.

void Location::Delta ( double &  lat,
double &  lon,
double  northings,
double  eastings 
)
static

References AtBearing().

double Location::EastingsDelta ( const double  startLat,
const double  startLon,
const float  eastingsDelta 
)
static
double Location::getBearing ( const double &  latitude,
const double &  longitude 
) const

References GetBearing(), lat_, and lon_.

double Location::getBearing ( const Location location1) const

References GetBearing(), lat_, and lon_.

double Location::GetDistance ( const double &  latitude0,
const double &  longitude0,
const double &  latitude1,
const double &  longitude1 
)
static
double Location::getDistance ( const double &  latitude,
const double &  longitude 
) const
double Location::getDistance ( const Location location1) const

References GetDistance(), lat_, and lon_.

double Location::GetDistanceFast ( const double &  latitude0,
const double &  longitude0,
const double &  latitude1,
const double &  longitude1 
)
static
double Location::getDistanceFast ( const Location location1) const
const double Location::getLat ( const Unit unit) const

Override new.

Override delete

References Unit::getScaled(), and lat_.

Referenced by copyTo(), HFRadarModelPoint::run(), KmlLogWriter::write(), and KmlLogWriter::writeFooter().

const double Location::getLon ( const Unit unit) const
virtual int Location::getM ( ) const
inlinevirtual

Implement abstract I2D method.

Implements I1D< double >.

virtual double* Location::getPtr1d ( )
inlinevirtual

Implement abstract I1D method Note that Location, when accessed via I1D methods, returns RADIANS.

Implements I1D< double >.

References value_.

double Location::HavSin ( double  angle)
static

Referenced by GetDistance().

bool Location::isNan ( ) const

References lat_, and lon_.

double Location::NorthingsDelta ( const double  startLat,
const float  northingsDelta 
)
static
const Location Location::operator+ ( const Location rhs) const

References Location().

Location & Location::operator+= ( const Location rhs)

References lat_, and lon_.

const Location Location::operator- ( const Location rhs) const

References Location().

Location & Location::operator-= ( const Location rhs)

References lat_, and lon_.

Location & Location::operator= ( const Location rhs)

References lat_, and lon_.

bool Location::setFrom ( const Unit unit,
unsigned char  value 
)
inline

set from unsigned char value

bool Location::setFrom ( const Unit unit,
double  value 
)
inline

set from double value

bool Location::setFrom ( const Unit unit,
float  value 
)
inline

set from float value

bool Location::setFrom ( const Unit unit,
int  value 
)
inline

set int value

bool Location::setFrom ( const DataValue value)

set DataValue value

void Location::setLat ( const Unit unit,
const double &  lat 
)

References Unit::getSI(), and lat_.

Referenced by KmlLogWriter::write().

void Location::setLon ( const Unit unit,
const double &  lat 
)

References Unit::getSI(), and lon_.

Referenced by KmlLogWriter::write().

Str Location::toString ( const Unit unit) const

References Unit::getScaled(), and value_.

Member Data Documentation

double& Location::lat_
protected
double& Location::lon_
protected
double Location::value_[2]
protected

Referenced by getPtr1d(), Location(), and toString().


The documentation for this class was generated from the following files: