wposition1.h

00001 
00005 #pragma once
00006 
00007 #include <usml/ublas/ublas.h>
00008 #include <usml/types/wvector1.h>
00009 #include <usml/types/wposition.h>
00010 
00011 namespace usml {
00012 namespace types {
00015 
00022 class USML_DECLSPEC wposition1: public wvector1
00023 {
00024 
00025 public:
00026 
00027     //*********************************
00028     // initialization
00029 
00037     wposition1(double lat = 0.0, double lng = 0.0, double alt = 0.0);
00038 
00050     wposition1( const wposition1& location, double range, double bearing);
00051 
00058     wposition1(const wvector1& other);
00059 
00063     wposition1(const wvector& other, size_t row, size_t col);
00064 
00065 public:
00066 
00067     //******************************
00068     // Altitude property
00069 
00076     inline double altitude() const {
00077         return rho() - wposition::earth_radius;
00078     }
00079 
00086     inline void altitude(double altitude) {
00087         rho(altitude + wposition::earth_radius);
00088     }
00089 
00090     //******************************
00091     // Latitude property
00092 
00099     inline double latitude() const {
00100         return to_latitude(theta());
00101     }
00102 
00109     inline void latitude(double latitude) {
00110         theta(to_colatitude(latitude));
00111     }
00112 
00113     //******************************
00114     // Longitude property
00115 
00122     inline double longitude() const {
00123         return to_degrees(phi());
00124     }
00125 
00132     inline void longitude(double longitude) {
00133         phi(to_radians(longitude));
00134     }
00135 
00136     //******************************
00137     // Utilities
00138 
00150     double gc_range( const wposition1& location, double* bearing=NULL) const ;
00151 
00152 };
00153 
00155 } // end of ocean namespace
00156 } // end of usml namespace

Generated on 4 May 2015 for USML by  doxygen 1.6.1