我有一个关于原点的物体,比如x,y,z。
我想对点应用一些转换,比如旋转和平移,并在转换点呈现对象。我正在使用glTranslatef()
和glRotatef()
函数。看上去像这样:
glTranslatef(x,y,z);
glRotatef(Ang,0,1,0); // rotated around Y axis at an arbitrary angle
glTranslatef(xt,yt,zt); // further translation
<render the object>
即使它将我从复杂的矩阵转换操作中拯救出来,我仍然不知道最终位置相对于原点的实际坐标值。是否有一种方法可以在不进行矩阵运算的情况下检索转换点的实际位置坐标?
发布于 2012-02-17 05:28:05
可以使用OpenGL状态使用glGetDoublev检索矩阵。
GLdouble projectionMatrix[16];
glGetDoublev(GL_PROJECTION, projectionMatrix);
GLdouble modelViewMatrix[16];
glGetDoublev(GL_MODELVIEW, modelViewMatrix);
还要注意的是,当你先平移,然后旋转,你也旋转了平移向量。通常,您在原点旋转对象,然后将其转换,从而在平移结束点产生一个旋转的对象。
编辑:以获得转换后的坐标p',您需要使用以下矩阵来转换点p:
p' = projectionMatrix * modelViewMatrix * p
我建议在这种操作中使用glm。
https://stackoverflow.com/questions/9328992
复制