我在使用gluLookAt时使用了一个摄像头,摄像头的坐标分别是xCam、yCam和zCam,摄像头所观察的对象的坐标分别是xPos、yPos和zPos,还有名为mouseturnX和mouseturnY的变量,它们测量鼠标在x轴和y轴上与屏幕中心的偏差,变量camdist描述了摄像头和它所观察的对象之间的距离。
摄像机位置的代码如下:
xCam = sin(mouseturnX)*camdist+xPos
yCam = mouseturnY+yPos
zCam = cos(mouseturnX)*camdist+zPos
现在我创建了一个多边形对象,并使用它进行旋转:
glRotatef(mouseturnX,0,1,0)
通常它应该只显示物体的背面,这与相机的位置无关。但现在它不能正确地旋转。我尝试了其他旋转轴,那里工作正常,但与y轴它只是不想工作。我尝试改变camdist从积极到消极,glRotatef函数中的mouseturnX从正到负再回到正。它就是不起作用。我在旋转命令之前使用了glPushMatrix,在旋转命令之后使用了glPopMatrix。在旋转命令之前的一行,我使用了translate函数来设置多边形的固定点。
编辑:多边形实际上旋转了,但旋转的量不对,看起来我必须用一些东西来乘乘乘多边形的旋转。
1条答案
按热度按时间jv2fixgn1#
我试着找到了乘数,它是56.5。它不完美,但它工作。