![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2011 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00006 #pragma once 00007 #include "geometry/point.h" 00008 #include "matrix/coordTransform.h" 00009 #include <bhaveUtil/bhaveUtilDefines.h> 00010 #include "vlutil/vlString.h" 00011 #include "kypathdata/math/vec3f.h" 00012 00013 namespace BHAVE 00014 { 00016 class DT_DLL_bhaveUtil DtCoordinateConverter; 00017 00018 typedef DT_DLL_bhaveUtil DtCoordinateConverter* (*DtCoordConvCreatorFunc)(); 00019 00020 class DT_DLL_bhaveUtil DtCoordinateConverter 00021 { 00022 protected: 00023 DtCoordinateConverter(); 00024 DtCoordinateConverter(const DtCoordinateConverter& orig); 00025 void operator=(const DtCoordinateConverter& orig); 00026 00027 public: 00028 virtual ~DtCoordinateConverter(); 00029 00034 static DtCoordinateConverter* instance(); 00035 00043 static bool isGeocentric(bool ignoreRefPoint = false); 00044 00048 virtual const DtPoint& geocentricRefPoint() const; 00049 00055 virtual void setGeocentricRefPoint(const DtPoint& point); 00056 00058 virtual bool loadGeocentricRefPointFromFile(const DtString& filePath); 00059 00061 virtual void saveGeocentricRefPointToFile(const DtString& filePath) const; 00062 00064 virtual bool convertGeoToBhave(const Kaim::Vec3f& point, Kaim::Vec3f& result) const; 00065 virtual bool convertGeoToBhave(const DtVector& point, Kaim::Vec3f& result) const; 00066 virtual bool convertGeoToBhave(const DtPoint& point, Kaim::Vec3f& result) const; 00067 virtual bool convertGeoToBhave(const DtPoint& point, DtPoint& result) const; 00068 virtual bool convertGeoToBhave(const DtVector& point, DtVector& result) const; 00069 00071 virtual bool convertBhaveToGeo(const Kaim::Vec3f& point, Kaim::Vec3f& result) const; 00072 virtual bool convertBhaveToGeo(const DtVector& point, DtVector& result) const; 00073 virtual bool convertBhaveToGeo(const Kaim::Vec3f& point, DtPoint& result) const; 00074 virtual bool convertBhaveToGeo(const Kaim::Vec3f& point, DtVector& result) const; 00075 virtual bool convertBhaveToGeo(const DtPoint& point, DtPoint& result) const; 00076 00078 virtual bool convertOrientationToBhave(const DtVector& orientation, DtVector& result) const; 00079 00081 virtual bool convertBhaveOrientationToGeo(const DtVector& orientation, DtVector& result) const; 00082 00083 protected: 00084 static DtCoordinateConverter* creator(); 00085 static void setCreator(DtCoordConvCreatorFunc creatorFunc); 00086 00089 virtual void generateTransformMatrices(); 00090 00091 static DtCoordinateConverter* theInstance; 00092 static DtCoordConvCreatorFunc theCreator; 00093 DtPoint myGeoRefPoint; 00094 DtCoordTransform* myMatrix; 00095 DtDcm myGeoCorrectionMatrix; 00096 DtDcm myInvGeoCorrectionMatrix; 00097 DtCoordTransform myInvMatrix; 00098 }; 00099 } 00100