如何通过mat4转换vec3?

时间:2012-01-25 01:26:05

标签: javascript c++ directx

我正在将一些代码翻译成javascript。我正在尝试复制

的功能
 D3DXVECTOR3* D3DXVec3TransformCoord(
 __inout  D3DXVECTOR3 *pOut,
 __in     const D3DXVECTOR3 *pV,
 __in     const D3DXMATRIX *pM
 );

这将Mat4转换应用于Vec3(这将导致无效的mat4)。如何将4d矩阵投影到3d矩阵并执行操作?你会用什么顺序做数学运算?我们可以假设W = 1,如下文所示:

DirectX Math function confusion

1 个答案:

答案 0 :(得分:1)

此函数的documentation表示“按给定矩阵转换3D矢量,将结果投影回w = 1 ”。

换句话说,函数将向量 [x,y,z] 扩展为 [x,y,z,1] ,然后执行乘法运算,截断操作后得到三个元素。

编辑:根据this thread,操作是 xA ,即左边的行向量乘法,相当于齐次变换: xM(0)+ yM(1)+ zM(2)+ M(3),其中 M(i)是矩阵的第i列。