D3DXVec3TransformNormal()和D3DXVec3TransformCoord()

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值