|
本帖最后由 hgyzj 于 2011-12-10 10:40 编辑
您好!
我是想旋转一个物体的角度,并且显示出来,我是这样做的
//相应Left按键,向左旋转
m_modelMT->preMult(osg:: Matrix:: rotate(osg:: DegreesToRadians(m_fAngle),osg:: Vec3f(0.0,0.0,1.0)));
osg:: Quat rotateQuat;
rotateQuat=m_modelMT->getMatrix().getRotate();
double rotateAngle;
rotateQuat.getRotate(rotateAngle,osg:: Vec3f(0,0,1));
//然后把旋转角度osg:: RadiansToDegrees(rotateAngle)显示出来。
........
//相应Right按键,视点向右旋转
m_modelMT->preMult(osg:: Matrix:: rotate(osg:: DegreesToRadians(-m_fAngle),osg:: Vec3f(0.0,0.0,1.0)));
osg:: Quat rotateQuat;
rotateQuat=m_modelMT->getMatrix().getRotate();
double rotateAngle;
rotateQuat.getRotate(rotateAngle,osg:: Vec3f(0,0,1));
//然后把旋转角度osg:: RadiansToDegrees(rotateAngle)显示出来。
.....
实验结果,转动模型显示没问题。但是获取到的角度出现问题:如果一直向左旋转,获取到的rotateAngle变化范围是从0°-270°,然后又从90°-0°。向右旋转正好相反,并没有出现向右为负,或者0°-360°的情况。请问这是怎么回事?我是想向左转区间为0°到180°,向右转区间为0°到-180°。看到这种现象有点疑惑,不知哪里出了问题,恳请您的指教,谢谢!
|
|