我在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();
答案 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)
您也必须移动坐标系的原点,以便根据需要旋转您的汽车。