Javascript 如何通过mat4转换vec3?

Javascript 如何通过mat4转换vec3?,javascript,c++,directx,Javascript,C++,Directx,我正在将一些代码翻译成javascript。我正在尝试复制的功能 D3DXVECTOR3* D3DXVec3TransformCoord( __inout D3DXVECTOR3 *pOut, __in const D3DXVECTOR3 *pV, __in const D3DXMATRIX *pM ); 这将Mat4转换应用于Vec3(这将导致无效的Mat4)。如何将4d矩阵投影到3d矩阵中并执行操作?你会按什么顺序做数学题?我们可以假设W=1,如下所示: 此函数

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

 D3DXVECTOR3* D3DXVec3TransformCoord(
 __inout  D3DXVECTOR3 *pOut,
 __in     const D3DXVECTOR3 *pV,
 __in     const D3DXMATRIX *pM
 );
这将Mat4转换应用于Vec3(这将导致无效的Mat4)。如何将4d矩阵投影到3d矩阵中并执行操作?你会按什么顺序做数学题?我们可以假设W=1,如下所示:

此函数的说明是“通过给定矩阵变换3D向量,将结果投影回w=1”

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


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

你真的在问如何用向量变换矩阵吗,在内置的C++和D3DXVEC3变换和D3DXVEC3转换COORD之间,我只想确定它们执行的精确数学。根据一个名字,你永远不知道它是比你期望的多了一点还是少了一点。这种联系很有帮助。现在我知道在哪里找到内部设备。这和普通的C++ VEC3*Mat4一样吗?我看到这个操作符被使用了,但我想知道它到底在做什么。从数学上讲,Vec3*Mat4没有定义,向量长度必须与矩阵中的行数相匹配。如果将w=1“投影”考虑在内,则应得到与Vec4*Mat4例程相同的结果。