0

我似乎无法在脑海中弄清楚这一点。我正在尝试在 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(或者每个新坐标位置是什么)?

请帮忙,我已经被困了这么久!

4

2 回答 2

4

尝试以下操作:

1) 将当前矩阵入栈;2)加载身份并应用您的转换;3) 将生成的转换矩阵转换为一些临时变量。glGet 或类似的东西会有所帮助;4)从堆栈中弹出矩阵;

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

于 2009-10-22T15:28:10.157 回答
0

绝对:查看http://research.cs.queensu.ca/~jstewart/454/notes/pipeline/

简而言之,所有这些调用都简化为一个矩阵,该矩阵乘以该点。

SadSido 的方法肯定会让您得到结果矩阵,但真正了解幕后发生的事情可能不会有什么坏处。上述计算将产生以下线性代数方程:

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

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

于 2009-10-22T15:37:08.657 回答