Visual c++ 在OpenGL中旋转一点
我有一个立方体,我想在XZ轴的位置上移动。每次立方体移动到网格中的另一个点时,它都会旋转立方体。立方体将以90度翻转。问题就在这里。立方体在旋转时会稍微下沉到网格底部。我不知道如何解决这个问题。有什么建议吗Visual c++ 在OpenGL中旋转一点,visual-c++,opengl,math,Visual C++,Opengl,Math,我有一个立方体,我想在XZ轴的位置上移动。每次立方体移动到网格中的另一个点时,它都会旋转立方体。立方体将以90度翻转。问题就在这里。立方体在旋转时会稍微下沉到网格底部。我不知道如何解决这个问题。有什么建议吗 if( (mvPosition.z - mvLastPosition.z) > 0 || (mvPosition.z - mvLastPosition.z) < 0) { glRotatef( (mvPosition.z - mvLastPosition.z) * 90.
if( (mvPosition.z - mvLastPosition.z) > 0 || (mvPosition.z - mvLastPosition.z) < 0)
{
glRotatef( (mvPosition.z - mvLastPosition.z) * 90.0f, 1.0f, 0.0f, 0.0f);
}
else if ( (mvPosition.x - mvLastPosition.x) > 0 || (mvPosition.x - mvLastPosition.x) < 0 )
{
glRotatef( (mvPosition.x - mvLastPosition.x) * -90.0f, 0.0f, 0.0f, 1.0f);
}
if((mvPosition.z-mvLastPosition.z)>0 | |(mvPosition.z-mvLastPosition.z)<0)
{
glRotatef((mvPosition.z-mvLastPosition.z)*90.0f、1.0f、0.0f、0.0f);
}
else如果((mvPosition.x-mvLastPosition.x)>0 | |(mvPosition.x-mvLastPosition.x)<0)
{
glRotatef((mvPosition.x-mvLastPosition.x)*-90.0f、0.0f、0.0f、1.0f);
}
我所能想到的就是:代码会累积计算错误,这是浮点算法不可避免的。解决这个问题的方法不仅仅是用glRotatef更新旧矩阵,而是用glLoadIdentity()重置它们,并在每一帧计算新矩阵。您好。谢谢你的建议。对OpenGL来说相当陌生,所以我可以使用我能得到的所有帮助!不想成为一个傻瓜,但有没有办法在一个固定点上翻转立方体。根据我一直在研究的,我必须将原点平移到旋转点,然后再次平移。但我在翻译原文时几乎失去了它。。。