我在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();发布于 2013-06-18 12:32:03
您可以尝试在旋转之前调用translate。glRotatef旋转视图矩阵,它影响当前视图和矩阵glTranslatef。
发布于 2013-06-18 14:32:54
从图像中,我以为你是在平移然后旋转,但是看着代码,我发现这不是真的。
因此,很明显,您是在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]发布于 2013-06-18 12:39:20
您还必须移动坐标系的原点,以便随心所欲地旋转汽车。
https://stackoverflow.com/questions/17160531
复制相似问题