DirectX 矩阵
基础:
下标:第一个下标为该元素所在行的索引,第二个下标为该元素所在列的索引。如下图所示

行向量和列向量:只有单行的向量称为行向量,只有单列的称之为列向量。
相等
维数和元素都相等
数乘(与标量相乘)
每一个元素与标量相乘
加法(矩阵+矩阵=矩阵)
两个矩阵相应元素想加所得的矩阵,必须维数相等
矩阵乘法(矩阵*矩阵=矩阵)
条件:A的列数必须等于B的行数
定义:A(m*n) B(n*p) 则乘积AB有意义,且等于一个矩阵C(m*p),其中乘积C[i][j] = A的第i个行向量 * B的第j个列向量的点积。

单位矩阵(类似于标量1与矩阵相乘不改变矩阵)
定义:除主对角线上的元素为1外,其它全为0

单位阵可以作为一个乘法单位(multiplicative identity) MI = IM = M
即,用一个单位矩阵与某一个矩阵相乘,不改变该矩阵。而且,某一矩阵与单位矩阵相乘,是矩阵简洁可交换的特例,单位矩阵对于标量可以认为是矩阵中的”1”
证明:

逆矩阵(矩阵的乘法逆运算)
- 只有方阵才有逆矩阵
- 一个n*n的矩阵M的逆矩阵也是一个n*n的矩阵用
表示 - 并非所有方阵都有逆矩阵
- 一个矩阵与其逆阵的乘积为单位阵,当一个矩阵与其逆矩阵相乘时,可交换相乘次序
矩阵的转置
通过交换矩阵的行和列

D3DX矩阵
编程D3DX程序时,我们通常只使用4*4的矩阵和1*4的行向量。注意,使用这两种维护的矩阵,意味着以下矩阵乘法是有意义的:
向量-矩阵乘法。若v为1*4的行向量,T为4*4的矩阵,则乘积vT有意义,且其结果为1*4的行向量
矩阵矩阵乘法:若T和R都为4*4的矩阵,则乘积TR和RT有意义,其结果为4*4的矩阵。注意TR和RT不一定相等。
基本变换
1*4向量在3d坐标系中点表示方法p = (p1,p2,p3,)
1*4向量在3d坐标系中向量的表示方法 v = (v1,v2,v3,) 扩展后的向量称为齐次向量,因为齐次向量即可以表示点,又可以表示向量
向量处于齐次空间:

平移矩阵
要想将向量(x,y,z,1)沿x轴平稳px单位,y轴平移py个单位,z轴平移pz个单位 我们只需要将该向量与以下矩阵相乘

用于创建平移矩阵的D3DX函数为D3DXMatrixTranslation
旋转矩阵
我们可以用如下3个矩阵分别表示绕x,y,z轴旋转θ弧度



旋转矩阵R的逆矩阵与其转置相等,即

比例变的矩阵
比例变的
如果让一个向量沿x,y,z轴分别放大qx,qy,qz倍,可令该向量与如下矩阵相乘

Dx中的函数为

几何变的的组合
矩阵变换的一个最关键的优点是,可借助矩阵乘法将几种变换组合为一个变换矩阵
向量变换的一些函数
D3DXVerc3TransformCoord函数对点进行变换,并假定向量第4个分量为1
D3DXVec3TransformNormal用于向量变换,并假定向量第4个分量为0

DirectX 矩阵的更多相关文章
- “为什么DirectX里表示三维坐标要建一个4*4的矩阵?”
0x00 前言 首先要说明的是,本文的标题事实上来自于知乎上的一个同名问题:为什么directX里表示三维坐标要建一个4*4的矩阵? - 编程 .因此,正如Milo Yip大神所说的这个标题事实上是存 ...
- 矩阵-DirectX与OpenGL的不同
http://www.cnblogs.com/graphics/archive/2012/08/02/2616017.html 矩阵是三维图形学中不可或缺的部分,几乎所有和变换相关的操作都涉及矩阵,世 ...
- 纠结和郁闷的存在感-关于DirectX与HLSL的矩阵存储方式---转载好文章
我常常这么大胆的认为,搞科学的人总是喜欢用各种让常人难以理解的复杂方式去处理某些其实可能很简单的事情,这种情况在他自身擅长的.有着诸多对手竞争的领域上极为常见.比如吧,搞DirectX的人用了左手坐标 ...
- (转)思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,...
转自:http://www.cnblogs.com/soroman/archive/2008/03/21/1115571.html 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用1. ...
- 【DirectX 11学习笔记】世界矩阵的理解-运动合成
最近在看龙书,写一下自己的学习理解,主要是物体运动的合成. 物体于局部坐标系内构建,每个物体拥有自己的局部坐标系以及相应的顶点矩阵A,并通过世界矩阵变换到唯一的世界坐标系. 物体在某时刻发生了位移和旋 ...
- DirectX基础 常用函数语句
DirectX常用函数语句 常用数学类函数: 计算向量的长度(模): FLOAT D3DXVec3Length(CONST D3DXVECTOR3* pV); 向量的规范化: D3DXVECTOR3 ...
- DirectX标准规定 DirectX和OpenGL的不同
DirectX标准规定 DirectX使用左手坐标系. X轴正向指向右,Y轴正向指向上,Z轴正向垂直纸面向内. 编写Direct3D应用程序时,通常只使用4×4的矩阵和1×4的行向量,相乘时行向量在前 ...
- (转)投影矩阵的推导(Deriving Projection Matrices)
转自:http://blog.csdn.net/gggg_ggg/article/details/45969499 本文乃<投影矩阵的推导>译文,原文地址为: http://www.cod ...
- [ZZ] 基于DirectX shader的Per-pixel lighting实现
这个特效需要用到DX11 UAV吗? http://blog.tianya.cn/blogger/post_show.asp?BlogID=510979&PostID=5665974 Intr ...
随机推荐
- Verilog篇(一)
Verilog在行为级建模时常用到的一些函数,变量等. 1:$random(seed),每次根据seed的值产生一个32位的有符号数,seed的数据类型必须是寄存器(reg),整形(integer), ...
- win32 Ui 编程 收集
---恢复内容开始--- windows sdk编程系列---- 通用控件 http://www.cnblogs.com/MoreNotepad-plus-plus/articles/3164534. ...
- 非常好!!!【从头开始写操作系统系列】实现一个-GDT(1)【转】
转自:http://blog.csdn.net/luoyhang003/article/details/47338019 权声明:本文为博主原创文章,未经博主允许不得转载.(文章来源:http://b ...
- 7.1SportsStore:Navigation and Checkout
准备示例项目 使用真实的产品数据 现在,要切换到使用真实的数据,从Deployd服务器获取. AngularJS通过一个叫做$http的服务,为Ajax请求提供支持.作者将在第三部分详细讲解它是怎么工 ...
- org.hibernate.PropertyNotFoundException:could not find a getter for name in class ....
Hibernate创建持久化类须符合JavaBean的规范,"get","set"后面紧跟属性的名字,并且属性名的首字母为大写.如果不遵守这个规则,Hibern ...
- Android推送方案分析(MQTT/XMPP/GCM)
本文主旨在于,对目前Android平台上最主流的几种消息推送方案进行分析和对比,比较客观地反映出这些推送方案的优缺点,帮助大家选择最合适的实施方案. 方案1. 使用GCM服务(Google Cloud ...
- C语言中%*s,%*c 是什么意思(还有%*.*s)
在 scanf 和 printf 里效果是不一样的. 在printf,动态控制显示格式用的 printf("%*s",5,"123");执行一下,这条语句,输出 ...
- 收藏本网站兼容火狐IE
<script type="text/javascript"> function AddFavorite(sURL, sTitle) {try { window.ext ...
- vscode使用php调试
1:首先查看是否安装xdebug扩展 打开终端 ➜ ~ php -vPHP 5.6.24 (cli) (built: Jul 21 2016 14:27:54) Copyright (c) 1997 ...
- [ios]纯代码实现UITableViewCell的自定义扩展
(转)参考:http://blog.sina.com.cn/s/blog_65cbfb2b0101cd60.html 第一种, 简单的增加UITableViewCell一些小功能 例如在cell上面添 ...