我似乎无法在脑海中弄清楚这一点。我正试图在3D空间中移动一个物体。

如果我在5,15,5处有一个点并使用opengl函数来改变模型视图....

glTranslatef( 10.0f, 4.0f, 4.0f );
glRotatef( 33.0f, 1.0f, 0.0f, 0.0f );
glTranslatef( 10.0f, 4.0f, 4.0f );

有没有办法可以找出该点最终的位置(世界/全球坐标)? 我可以进行某种矩阵计算,它会让我回到20,26,23(或每个新的坐标位置是什么)?

请帮助,我已经坚持这么久了!

有帮助吗?

解决方案

尝试以下方法:

1)将当前矩阵推入堆栈; 2)加载标识并应用您的转换; 3)将得到的变换矩阵输入到某个临时变量中。 glGet或类似的东西会有所帮助; 4)从堆栈中弹出矩阵;

现在你有了转换矩阵。将此点乘以此矩阵,以预测变换后的点坐标。

其他提示

绝对:查看 http://research.cs.queensu .CA /〜jstewart / 454 /笔记/管道/

简而言之,所有这些调用都会缩减为单个矩阵,并将其乘以该点。

SadSido的方法肯定能让你获得最终的矩阵,但实际了解幕后发生的事情并不会有什么坏处。上面的计算将产生以下线性代数方程:

pOut = [mTranslate] * [mRotate] * [mTranslate] * pIn

其中mTranslate =平移调用(转换矩阵),mRotate =旋转调用(围绕任意轴旋转的矩阵)。计算一下,你就好了!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top