【发布时间】:2011-12-06 14:48:03
【问题描述】:
我有一个平面对象,我希望它能够向前移动和左右旋转。我希望飞机朝着它所面对的方向前进。
这是我的代码,但它不起作用,我哪里出错了?
directionX=sin(heading*M_PI/180.0);
directionZ=-cos(heading*M_PI/180.0);
if(keys['W']){
eyeX += directionX;
eyeZ += directionZ;
}
if(keys['S']){
eyeX -= directionX;
eyeZ -= directionZ;
}
if(keys[VK_LEFT])
heading -= 1;
if(keys[VK_RIGHT])
heading += 1;
平面使用航向旋转,并使用 eyeX 和 eyeZ 平移。
//Aircraft
glPushMatrix();
glRotatef(-heading, 0,1,0);
glTranslatef(eyeX,eyeY,eyeZ);
model.speedDisplayFaceNormals();
//model.drawBoundingBox();
//model.drawOctreeLeaves();
glPopMatrix();
【问题讨论】:
-
你应该更清楚地描述它是如何不工作的。描述您如何选择坐标轴的方向也是有意义的。
-
另外,请发布您的 glRotate/glTranslate 代码,或者这些东西实际影响您的矩阵的代码。
-
但是它到底有什么问题呢?更具描述性。
标签: opengl