4

所以我有一个对象正在旋转,然后再次平移和旋转。我将这些翻译的矩阵存储为对象成员。现在,当我开始拾取物体时,我需要知道这个物体的 3D 世界坐标。

目前我已经能够像这样获得对象的位置

coords[0] = finalMatrix[12];

coords[1] = finalMatrix[13];

coords[2] = finalMatrix[14];

这给了我对象的正确位置,但我也想考虑旋转。

任何帮助都会很棒...

4

3 回答 3

2

所以我是个白痴……我一开始就说对了。我只需要 [12][13][14] 中的位置数据。我的代码中有几个愚蠢的错误,其中一个是在我的射线交叉点上没有足够的迭代......现在一切都排序了,哈哈,我在踢自己......哈哈,无论如何,谢谢大家!

于 2011-01-26T09:53:13.137 回答
2

http://www.euclideanspace.com/maths/geometry/affine/matrix4x4/index.htm - 这里解释了 4x4 矩阵是如何工作的。第一个小 3x3 - 是一个旋转矩阵。除了最后一个元素之外的最后一列是平移向量。而 element[4, 4] 是一个比例因子。在链接中阅读有关此内容的更多信息

于 2011-01-25T10:16:23.820 回答
2

该矩阵是一个 4x4 矩阵,但由于您刚刚得到一个单维矩阵,因此元素排列如下:

[0]  [4]  [8]   [12]
[1]  [5]  [9]   [13]
[2]  [6]  [10]  [14]
[3]  [7]  [11]  [15]

旋转部分是左上角的 3x3 矩阵,请参见此处,因此在您的情况下,它将是元素[0]-[2][4]-[6]并且[8]-[10]

于 2011-01-25T09:30:39.513 回答