博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
D3DXVec3TransformCoord 函数 D3DXVec3TransformNormal 函数
阅读量:4936 次
发布时间:2019-06-11

本文共 1734 字,大约阅读时间需要 5 分钟。

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

 

函数相关:

 

D3DXVec3Transform, D3DXVec3TransformNormal

 

 

 

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,坐标的第四维数值是1

 

 
          向量 = 两个坐标的差值      第四维同样做减法,结果是0
 
      向量的坐标变换用D3DXVec3TransformNormal,点用D3DXVec3TransformCoord。D3DXVec3Transform和D3DXVec3TransformCoord相似,区别在于后者变换后将w投射回1
 
实际执行计算的时候是:
D3DXVec3TransformCoord 
VOut.x = V1.x * M.11 + V1.y * M.21 + V1.z * M.31 + M.41
VOut.y = V1.x * M.12 + V1.y * M.22 + V1.z * M.32 + M.42
VOut.z = V1.x * M.13 + V1.y * M.23 + V1.z * M.33 + M.43 
 
因为是向量,第四维不计算:
D3DXVec3TransformNormal 
VOut.x = V1.x * M.11 + V1.y * M.21 + V1.z * M.31 
VOut.y = V1.x * M.12 + V1.y * M.22 + V1.z * M.32 
VOut.z = V1.x * M.13 + V1.y * M.23 + V1.z * M.33

转载于:https://www.cnblogs.com/dragon2012/archive/2013/02/28/2937918.html

你可能感兴趣的文章
前端知识点总结
查看>>
github 在ubuntu 使用--常用命令
查看>>
hl7 V2中Message Control ID的含义及应用
查看>>
IOS 4个容易混淆的属性(textAligment contentVerticalAlignment contentHorizontalAlignment contentMode)...
查看>>
iOS 修改textholder的颜色
查看>>
【资料】wod地城掉落
查看>>
C# FTPHelper(搬运)
查看>>
C#HttpHelper类1.3正式版教程与升级报告
查看>>
【转】Android 语言切换过程分析
查看>>
jpa 多对多关系的实现注解形式
查看>>
Android开发——View绘制过程源码解析(一)
查看>>
Quartz和TopShelf Windows服务作业调度
查看>>
让ie9之前的版本支持canvas
查看>>
排序规则
查看>>
percent的用法
查看>>
中文词频统计
查看>>
Hibernate三种状态详解
查看>>
判断一个数是否是2^N次方
查看>>
html5特征检测
查看>>
js中几种实用的跨域方法原理详解
查看>>