NEHE OpengGL教程中第48课轨迹球的旋转角度有关问题

NEHE OpengGL教程中第48课轨迹球的旋转角度问题
1.关于那一课中如何计算旋转的角度,代码中记录旋转角度的变量时哪个?
2.我绘制了一个立方体,用nehe的代码实现旋转,并在立方体内绘制三个矩形(XY,XZ,YZ面),然后用鼠标拾取,能拖动三个矩形分别沿三个坐标轴方向移动。但是立方体旋转倒过来后,鼠标拖动时矩形就按相反方向移动了。我用xmove,zmove,ymove记录鼠标的位移,在OnMouseMove()中赋值。
xmove -= (float)(m_nPosition.x - point.x);  
ymove -= (float)(m_nPosition.y - point.y);
zmove -= (float)(m_nPosition.x - point.x);

在绘制矩形时加上move的值 
YZ面矩形:glVertex3f(x + xmove, y, z);  //沿X轴方向移动
XZ面矩形:glVertex3f(x, y + ymove, z);
XY面矩形:glVertex3f(x, y, z + zmove);
如果能知道旋转角度,那么在旋转超过180度后,就把move的值取反。


我试过用glRotef()来控制旋转,但那样不好用鼠标拖动来控制旋转(拖动方向和旋转方向很难一致)。
还有没有其他方法能很好地控制旋转,和旋转后移动方向的问题。能不能在每次旋转后重置矩阵,也许那样方向就不会反过来?
------解决方案--------------------
nobody