16 #include <matrix/vlMath.h>
17 #include <matrix/utmCoord.h>
18 #include <vl/utmView.h>
21 #include <vlutil/vlMutex.h>
22 #include <vlutil/vlScopedLock.h>
24 #define GETLAT(dms) ((dms).lat())
25 #define GETLON(dms) ((dms).lon())
26 #define GETALT(dms) ((dms).alt())
27 #define SETLAT(dms,l) ((dms).setLat((l)))
28 #define SETLON(dms,l) ((dms).setLon((l)))
29 #define SETALT(dms,a) ((dms).setAlt((a)))
31 #define DtSQR(x) ((x)*(x))
33 namespace MAKVRinTerra {
class DtProj; }
61 double dynamicSceneOriginDeadband = 0.0);
77 virtual void dis2local(
const DtDcm& in, DtDcm& out)
const;
79 virtual void dis2local(
const DtVector& vIn,
const DtDcm& dIn,
84 virtual void disBody2localBody(
const DtDcm& in, DtDcm& out)
const;
88 virtual void local2dis(
const DtDcm& in, DtDcm& out)
const;
90 virtual void local2dis(
const DtVector& vIn,
const DtDcm& dIn,
95 virtual void localBody2disBody(
const DtDcm& in, DtDcm& out)
const;
98 virtual void localToGeodetic(
const DtVector& localPosition,
99 DtGeodeticCoord& geodeticPosition)
const;
100 virtual void localToGeodetic(
const DtVector& localPosition,
104 virtual void geodeticToLocal(
const DtGeodeticCoord& geodeticPosition,
107 virtual void geodeticToLocal(
const DtVector& geodeticPosition,
113 virtual void topoToLocal(
const DtVector& localPosition, DtDcm& topoToLocal)
const;
114 virtual void localToTopo(
const DtVector& localPosition, DtDcm& localToTopo)
const;
120 virtual DtDegMinSec latitudeOrigin()
const;
122 virtual DtDegMinSec longitudeOrigin()
const;
124 virtual CS_Type getCS_Type()
const;
129 virtual void updateDynamicSceneOrigin(
const DtVector& New_Origin);
142 virtual bool sceneOriginUpdatedThisFrame();
148 virtual bool useDynamicSceneOrigin();
150 virtual void localToGeodetic(
const DtExtent& extent,
DtExtent& destExtent)
const;
151 virtual void geodeticToLocal(
const DtExtent& extent,
DtExtent& destExtent)
const;
157 virtual DtString coordinateSystemName()
const;
160 virtual void setOrigin(
const DtGeodeticCoord&);
161 virtual DtGeodeticCoord
origin()
const;
168 virtual std::auto_ptr<ProjData> clone()
const = 0;
176 : myCS(cs), myLock(cs->myProjMutex) { }
179 return myCS->
myProjData.get() ? myCS->myProjData->proj() : 0;
182 void set(std::auto_ptr<ProjData> p) {
183 myCS->myProjData = p;