![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 1998 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: geodCrdSys.h,v $ $Revision: 1.13 $ $State: Exp $ 00007 *********************************************************************/ 00008 #ifndef geodCrdSys_H_ 00009 #define geodCrdSys_H_ 00010 00011 // 00012 // \file geodCrdSys.h Contains the geodetic coordinate system class declaration. 00013 // 00014 #include "terrainCS/terrainCSDefines.h" 00015 #include "terrainCS/coordSystem.h" 00016 00017 // class DtGeodeticCS: 00018 // 00019 // Instances of DtGeodeticCS are used by the terrain objects 00020 // for performing coordinate conversions from geocentric to geodetic. 00021 class DT_DLL_terrainCS DtGeodeticCS : public Coordinate_System 00022 { 00023 public: 00024 // constructor 00025 DtGeodeticCS(bool setUseDynamicSceneOrigin = false, 00026 double dynamicSceneOriginDeadband = 0.0); 00027 00028 // copy constructor 00029 DtGeodeticCS(const DtGeodeticCS& orig); 00030 00031 // destructor 00032 virtual ~DtGeodeticCS(); 00033 00034 // assignment operator 00035 DtGeodeticCS& operator=( 00036 const DtGeodeticCS& orig); 00037 00038 // Clone operator 00039 virtual Coordinate_System* clone() const; 00040 00041 // coordinates in the local (i.e., projected) coordinate system only 00042 // consist of X and Y, but we use a three element vector to store them so a 00043 // programmer can use the Z value for height above terrain. 00044 virtual void dis2local(const DtVector& in, DtVector& out) const; 00045 virtual void local2dis(const DtVector& in, DtVector& out) const; 00046 00047 // Returns the geodetic coordinate for a given local position. Local position 00048 // must be specified with x-component as longitude (in radians), y-component 00049 // as latitude (in radians), and z-component as altitude (in meters). 00050 virtual void localToGeodetic(const DtVector& localPosition, 00051 DtGeodeticCoord& geodeticPosition) const; 00052 00053 // Returns the local coordinate for a given geodetic position. Returned local 00054 // position x-component is longitude (in radians), y-component is latitude 00055 // (in radians), and z-component is altitude (in meters). 00056 virtual void geodeticToLocal(const DtGeodeticCoord& geodeticPosition, 00057 DtVector& localPosition) const; 00058 00059 // Returns a unit vector pointing downward (gravity) at a given 00060 // location. 00061 virtual DtVector down(const DtVector& location) const; 00062 00063 // Returns a coordinate transformation object for going between 00064 // topo and local coordinates, at a given location. It is up to the 00065 // caller to ensure that topoToLocal and localToTopo are valid pointers. 00066 virtual void topoToLocal(const DtVector& localPosition, 00067 DtDcm& topoToLocal) const; 00068 virtual void localToTopo(const DtVector& localPosition, 00069 DtDcm& localToTopo) const; 00070 00071 // Returns name of coordinate system 00072 virtual DtString coordinateSystemName() const; 00073 00074 private: 00075 // These functions are not implemented for this class, so they are hidden. 00076 using Coordinate_System::dis2local; 00077 using Coordinate_System::local2dis; 00078 using Coordinate_System::localToGeodetic; 00079 using Coordinate_System::geodeticToLocal; 00080 }; 00081 00082 #endif