4x4矩阵如何在3d图形中工作?

时间:2015-03-16 14:44:35

标签: math matrix 3d three.js

我正在学习3D图形并且偶然发现了矩阵,我并不完全理解。我有一个3d对象,有拓扑,坐标系中的点和ECS(对象的4x4矩阵)。 ECS是:

-1.1247455413666E-32 , 1.83690953073357E-16, 1                    , -95  , 
 1                   , 6.12303176911189E-17, 0                    , 604  , 
-6.12303176911189E-17, 1                   , -1.83690953073357E-16, 200.5, 
 0                   , 0                   , 0                    , 1    , 

每行用逗号分隔是什么意思?这些翻译载体是什么?

2 个答案:

答案 0 :(得分:5)

矩阵在向量空间之间定义linear transformations。所有线性变换都将域的原点映射到范围的原点。因此,3x3矩阵无法在3D矢量上执行平移,因为一个空间中的原点不能使用线性贴图映射到除另一个空间中的原点之外的其他任何内容。

为了克服这个问题,我们可以通过使用额外维度来伪造系统来执行翻译,其中所有向量在最后一个向量分量中将具有1。这些4D向量永远不会在原点(最后一个组件中有1个),因此不需要始终映射到原点。通过使用它,我们可以构建一个4x4矩阵来执行转换,如下所示:

| 1  0  0  Tx|   | x |   | x + Tx |
| 0  1  0  Ty|   | y |   | y + Ty |
| 0  0  1  Tz| x | z | = | z + Tz |
| 0  0  0   1|   | 1 |   |   1    |

出于渲染目的,最后一个位置的1将被删除。

答案 1 :(得分:4)

左上3x3块给出坐标系的旋转,最后一列的上3坐标给出平移向量。

这种仿射参数化的一般思想是,对于变换,乘以

[ x, y, z, 1 ]^T

从右边开始。