我似乎无法在脑海中弄清楚这一点。我正试图在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(或每个新的坐标位置是什么)?
请帮助,我已经坚持这么久了!
答案 0 :(得分:4)
尝试以下方法:
1)将当前矩阵推入堆栈; 2)加载标识并应用您的转换; 3)将得到的变换矩阵输入到某个临时变量中。 glGet或类似的东西会有所帮助; 4)从堆栈中弹出矩阵;
现在你有了转换矩阵。将此点乘以此矩阵,以预测变换后的点坐标。
答案 1 :(得分:0)
绝对:查看http://research.cs.queensu.ca/~jstewart/454/notes/pipeline/
简而言之,所有这些调用都会缩减为单个矩阵,并将其乘以该点。
SadSido的方法肯定能让你得到最终的矩阵,但实际了解幕后发生的事情可能并没有什么坏处。上面的计算将产生以下线性代数方程:
pOut = [mTranslate] * [mRotate] * [mTranslate] * pIn
其中mTranslate =平移调用(转换矩阵),mRotate =旋转调用(围绕任意轴旋转的矩阵)。计算一下,你就好了!