opengl中的车辆控制?

时间:2013-06-18 04:27:54

标签: c++ opengl

我在opengl遇到了麻烦。我想在前进/后退的同时旋转我的车辆。 Here's a picture显示了我的问题。当前代码的效果为蓝色 - 在移动汽车后,在起始位置而不是当前位置旋转。我希望情况为红色 - 我的车辆将在当前位置旋转,然后正确地向前/向后移动。

我目前的代码:

lxr=sin(angle);
lzr=cos(angle);

xr+=speed*lxr;
zr+=speed*lzr;

totalangle+=angle

glRotatef(totalangle,0.0,1.0,0.0);
glTranslatef(0.0,0.0,xr);
drawVehicle();

3 个答案:

答案 0 :(得分:2)

您可以尝试在旋转前调用translate。 glRotatef旋转视图矩阵,它影响当前视图和矩阵glTranslatef。

答案 1 :(得分:1)

从图像中,我以为你正在翻译然后旋转,但看着代码,我发现这不是真的。

因此,很明显你在drawVehicle();函数中没有在中心渲染你的对象(0,0)。您需要在中心渲染它,旋转然后翻译。

另外,你的翻译是假的。你只是在z方向上翻译,而不是在y:

glTranslatef(0.0,0.0,xr);

你需要做这样的事情:

glRotatef(totalangle,0.0,1.0,0.0);
glTranslatef(0.0,yOffset,0.0);
drawVehicle(); // render around [0,0]

答案 2 :(得分:0)

您也必须移动坐标系的原点,以便根据需要旋转您的汽车。