题
我似乎无法在脑海中弄清楚这一点。我正试图在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 =旋转调用(围绕任意轴旋转的矩阵)。计算一下,你就好了!
不隶属于 StackOverflow