00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "SGMath.hxx"
00019
00020 #ifndef NO_OPENSCENEGRAPH_INTERFACE
00021
00022 osg::Matrix SGGeod::makeSimulationFrameRelative() const
00023 {
00024 SGQuatd hlOr = SGQuatd::fromLonLat(*this);
00025 return osg::Matrix(toOsg(hlOr));
00026 }
00027
00028 osg::Matrix SGGeod::makeSimulationFrame() const
00029 {
00030 osg::Matrix result(makeSimulationFrameRelative());
00031 SGVec3d coord;
00032 SGGeodesy::SGGeodToCart(*this, coord);
00033 result.setTrans(toOsg(coord));
00034 return result;
00035 }
00036
00037 osg::Matrix SGGeod::makeZUpFrameRelative() const
00038 {
00039 osg::Matrix result(makeSimulationFrameRelative());
00040
00041 osg::Quat flip(0.0, 1.0, 0.0, 0.0);
00042 result.preMult(osg::Matrix(flip));
00043 return result;
00044 }
00045
00046 osg::Matrix SGGeod::makeZUpFrame() const
00047 {
00048 osg::Matrix result(makeZUpFrameRelative());
00049 SGVec3d coord;
00050 SGGeodesy::SGGeodToCart(*this, coord);
00051 result.setTrans(toOsg(coord));
00052 return result;
00053 }
00054
00055 #endif