D3DXVec3TransformNormal()和D3DXVec3TransformCoord()

来源:互联网 发布:js闭包的作用 编辑:程序博客网 时间:2024/06/08 12:10

D3DXVec3TransformNormal()和D3DXVec3TransformCoord()

根据给定的矩阵变换法线(向量)或坐标,区别在于后者变换后将w分量投射回1。

向量为两个坐标的差值,因此第四维的值为0,而坐标的第四维的值则为1。

上述两个函数具体的计算过程如下:

D3DXVec3TransformNormal
VOut.x =  VIn.x * M.11 + VIn.y * M.21 + VIn.z * M.31
VOut.y = VIn.x * M.12 + VIn.y *  M.22 + VIn.z * M.32
VOut.z = VIn.x * M.13 + VIn.y * M.23 + VIn.z * M.33

D3DXVec3TransformCoord
VOut.x =  VIn.x * M.11 + VIn.y * M.21 + VIn.z * M.31 + M.41
VOut.y = VIn.x * M.12 +  VIn.y * M.22 + VIn.z * M.32 + M.42
VOut.z = VIn.x * M.13 + VIn.y * M.23 +  VIn.z * M.33 + M.43

D3DXVec3TransformCoord 函数

用矩阵变换3-D向量,并且用w = 1投影结果。

定义:

D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord(     

    D3DXVECTOR3 *pOut,

    CONST D3DXVECTOR3 *pV,

    CONST D3DXMATRIX *pM

);

Parameters

pOut

[in, out] 指向 D3DXVECTOR3 结构的操作结果。

pV

[in] 指向 D3DXVECTOR3 结构的向量。

pM

[in] 指向 D3DXMATRIX 结构的变换矩阵。

Return Value

指向 D3DXVECTOR3 结构的变换后的向量。

说明:

这个函数用矩阵pM变换3-D向量pV (x, y, z, 1),并且用w = 1投影结果。

函数返回值跟pOut 参数返回值是一样的。这样可以让函数D3DXVec3TransformCoord作为其它函数的参数使用。

函数信息:

Header

d3dx9math.h

Import library

d3dx9.lib

Minimum operating systems

Windows 98

D3DXVec3TransformNormal 函数


用矩阵变换3-D向量标准形式。

定义:

D3DXVECTOR3 *WINAPI D3DXVec3TransformNormal(     

    D3DXVECTOR3 *pOut,

    CONST D3DXVECTOR3 *pV,

    CONST D3DXMATRIX *pM

);

Parameters

pOut

[in, out] 指向 D3DXVECTOR3 结果的操作结果。

pV

[in] 指向 D3DXVECTOR3 结构的向量。

pM

[in] 指向 D3DXMATRIX 结构的矩阵。

返回值:

指向 D3DXVECTOR3 结构的变换后的向量。

说明:

这个函数用矩阵pM变换向量pV标准形式 (x, y, z, 0),不是齐次坐标形式。

如果一个非仿射矩阵变换,那么这个矩阵要作逆运算后再转置才传给本函数。

函数返回值跟pOut 参数返回值是一样的。这样可以让函数D3DXVec3TransformNormal作为其它函数的参数使用。

函数信息:

Header

d3dx9math.h

Import library

d3dx9.lib

Minimum operating systems

Windows 98

原创粉丝点击