大家好,
如图所示,
我有一个名为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();
如果我没错的话,(Ox, Oy, Oz)和(hx, hy, hz)是世界坐标。现在我想做的是计算H点(hx, hy, hz)相对于O的物体坐标系(x', y', z')的位置。据我理解,我可以通过计算对象O的逆变换并将其应用于点H来实现这一点。您有什么提示吗?OpenGL是否提供了逆矩阵计算函数?如果我找到了逆矩阵,它们的乘法顺序是什么?注意:我想要实现一个类似“锤子”工具,在H点处绘制一个半径为R的球体。用户可以使用此球体像锤子一样砍断对象O。我已经在2D中实现了这一点,因此如果我能计算出相对于(x',y',z')的锤子位置,我就可以使用相同的算法。谢谢!
{Ox - hx, Oy - hy, Oz - hz}
(即glTranslatef(Ox - hx, Oy - hy, Oz - hz);
)吗?如果你已经有了全局向量O
和h
,那么这只是一个简单的向量减法问题,完全不需要矩阵操作。顺便说一下,你原来的解决方案是正确的。 - MrGomez