原文:D3DXVec3TransformNormal and D3DXVec3TransformCoord

D3DXVec3TransformCoord 对向量进行变换,没啥好说明的,默认向量为行向量,矩阵为列矩阵。
D3DXVec3TransformNormal 这个家伙对法线进行变换,其实就是对于方向性的向量进行变换,在计算中经常用来变换方向,“D3DXVec3TransformNormal transforms a normal using the transpose of the inverse of the given matrix”,他对向量进行变换时,会使用您提供的参数矩阵,先进行逆矩阵计算,再进行转置,然后变换向量,结果就是你想要的。

坐标和向量是有区别的:向量的第四维数值是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

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 and D3DXVec3TransformCoord的更多相关文章

  1. 转:D3DXVec3TransformNormal() 与 3DXVec3TransformCoord() 的区别

    DirectX中有两个很相似的函数,输入与输出的参数格式完全一样,都是输入一个三维向量(D3DXVECTOR3)和一个矩阵(D3DXMATRIX),输出变换之后的向量(D3DXVECTOR3). 函数 ...

  2. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  3. RTP与RTCP协议介绍(转载)

    RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...

  4. 《Walking the callstack(转载)》

    本文转载自:https://www.codeproject.com/articles/11132/walking-the-callstack Download demo project with so ...

  5. [转载]MVVM模式原理分析及实践

    没有找到很好的MVVM模式介绍文章,简单找了一篇,分享一下.MVVM实现了UI\UE设计师(Expression Blend 4设计界面)和软件工程师的合理分工,在SilverLight.WPF.Wi ...

  6. [转载]:STM32为什么必须先配置时钟再配置GPIO

    转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm ...

  7. [转载]从MyEclipse到IntelliJ IDEA-让你摆脱鼠标,全键盘操作

    从MyEclipse转战到IntelliJ IDEA的经历 注转载址:http://blog.csdn.net/luoweifu/article/details/13985835 我一个朋友写了一篇“ ...

  8. TCP同步与异步,长连接与短连接【转载】

    原文地址:TCP同步与异步,长连接与短连接作者:1984346023 [转载说明:http://zjj1211.blog.51cto.com/1812544/373896   这是今天看到的一篇讲到T ...

  9. 在CentOS 7/6.5/6.4 中安装Java JDK 8(转载)

    转载在CentOS 7/6.5/6.4 中安装Java JDK 8 首先,在你的服务器上运行一下更新. yum update 然后,在您的系统上搜索,任何版本的已安装的JDK组件. rpm -qa | ...

随机推荐

  1. 【[SCOI2010]序列操作】

    好颓啊,我竟然来写了一道恶心的板子 旁边的魏佬嘲讽我,还用欺负我 嘤嘤嘤 那就不膜魏佬了 嘤嘤嘤 这是一道无聊的板子 看到这些操作,我们看到这些操作就知道我们需要维护的东西了 首先那个最长的连续的\( ...

  2. MVC5新特性(一)之RouteAttribute打造自己的URL规则

    1.RouteAttribute概述 RouteAttribute的命名空间是System.Web.Mvc,区别与web api的RouteAttribute(它的命名空间是System.Web.Ht ...

  3. ethereumjs/ethereumjs-vm-5-vm对象

    1.运行文件 var Buffer = require('safe-buffer').Buffer // use for Node.js <4.5.0 var VM = require('./i ...

  4. iOS沙盒目录文件操作

    简介 沙盒(NSHomeDirectory())中总共有四个文件夹,documents.tmp.app.Library; 手动保存的文件在documents文件里; Nsuserdefaults保存的 ...

  5. VSCode调试C++

    在ubuntu下调试C++ 本人觉得VSCode比较好用. 步骤如下: 1. 编写.cpp,.h文件 自行完成自己的程序. 2. 编写CMakeLists.txt.下面是一个比较好用的模板. 根目录为 ...

  6. docker启动容器关于防火墙报错

    在重启docker工程时候出错: [root@hadoop-alone ~]# docker start padError response from daemon: driver failed pr ...

  7. java动态代理的基本思想以及简单的实现

    代理模式 本人参考于代理模式及Java实现动态代理  不作为商业用途,只是借鉴于其思路.侵权即删. 原理:给某个对象提供一个代理对象,并且由代理对象控制原对象的访问,即不直接操控原对象,而是通过代理对 ...

  8. oracle的sys和system的默认密码

    oracle的sys和system默认密码system默认:manager sys默认:change_on_install使用PL/SQL Plus登录数据库时,system用户使用密码manager ...

  9. Windows8系统下设置Mongodb开机启动

    1. 官网下载安装 MongoDB https://www.mongodb.com/ 2. 环境变量设置 把 mongod.exe 所在路径加入到环境变量的PATH, 我这里安装的路径是 D:\db\ ...

  10. Spark Streaming 进阶与案例实战

    Spark Streaming 进阶与案例实战 1.带状态的算子: UpdateStateByKey 2.实战:计算到目前位置累积出现的单词个数写入到MySql中 1.create table CRE ...