大家好,
如图所示,
我有一个名为 O 的对象(一组线条)。它的对象坐标系是 (x',y',z')。我使用以下代码片段在我的 OpenGL 场景中翻译、旋转该对象:
glPushMatrix();
glTranslatef(Oz, Oy,Oz);
glRotatef(rotationX , 1.0, 0.0, 0.0);
glRotatef(rotationY, 0.0, 1.0, 0.0);
glRotatef(rotationZ, 0.0, 0.0, 1.0);
contour->render();
glPopMatrix()
;
我有一个叫做 H 的点,它使用 (hx,hy,hz) 转换为世界坐标
glPushMatrix();
glTranslatef(hx,hy,hz);
glPopMatrix();
如果我是正确的, (Oz,Oy,Oz) 和 (hx,hy,hz) 是世界坐标。
现在,我要做的是计算 H (hx,hy,hz) 相对于 O 的对象坐标系的位置。(x',y',z'); 据我了解,我可以通过计算对象 O 的逆变换并将它们应用于点 H 来做到这一点。
对此有什么建议吗?OpenGL 是否提供任何逆矩阵计算函数?如果我以某种方式找到逆矩阵,它们相乘的顺序是什么?
注意:我想实现“锤子”之类的工具,在 H 点,我绘制一个半径为 R 的球体。用户可以使用这个球体像锤子一样切割对象 O。我已经在 2D 中实现了这个,所以我可以使用如果我可以计算相对于 (x',y',z') 的锤子位置,则使用相同的算法
提前致谢。