00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <PVLE/Util/Log.h>
00028 #include <osg/Vec3>
00029 #include <osg/Vec4>
00030 #include <osg/Quat>
00031 #include <osg/Matrix>
00032 #include <boost/format.hpp>
00033
00034
00035 std::ostream& operator<<(std::ostream& stream, const osg::Vec3f& v) {
00036 stream << boost::format("(%.4e, %.4e, %.4e)") % v.x() % v.y() % v.z();
00037 return stream;
00038 }
00039
00040 std::ostream& operator<<(std::ostream& stream, const osg::Vec4f& v) {
00041 stream << boost::format("(%.4e, %.4e, %.4e, %.4e)") % v.x() % v.y() % v.z() % v.w();
00042 return stream;
00043 }
00044
00045 std::ostream& operator<<(std::ostream& stream, const osg::Quat& q) {
00046 osg::Vec3 axis;
00047 osg::Quat::value_type angle;
00048 q.getRotate(angle, axis);
00049 stream << axis << boost::format(" %.4e rad (%.4e°)") % angle % osg::RadiansToDegrees(angle);
00050 return stream;
00051 }
00052
00053 std::ostream& operator<<(std::ostream& stream, const osg::Matrixf& m) {
00054 osg::Quat rot;
00055 m.get(rot);
00056 stream << "Matrix decomposition : \n" <<
00057 " Rot : " << rot <<
00058 " Trans : " << m.getTrans() <<
00059 " Scale : " << m.getScale();
00060 return stream;
00061 }