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 ...
随机推荐
- php 获取mac地址
<?php /** * 获取机器网卡的物理(MAC)地址* 目前支持WIN/LINUX系统 * 编辑: www.jbxue.com**/ class MacAddInfo { ...
- OpenStack collectd的从零安装服务端
安装collectd包操作同客户端相同,不在赘述 配置文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...
- android 项目学习随笔十(自定义ProgressBar)
android:innerRadius 内部半径 android:thickness 厚度 gradient 渐变 android:useLevel="false" 取掉控件自带旋 ...
- dir cmd、the DIR Command、windows
原因 :如何在windows下的cmd.exe中只列出文件名? solve : dir \a:-d \b Extend Reading : dir [drive:][path][filename] ...
- shell脚本小技巧
输入参数错误时,退格会出现^H,这个时候只要在脚本顶部加一条语句:stty erase ^h就可以了 #!/bin/sh stty erase ^h
- TreeView htc 改写
call the function loadTree(treeviewId) when body is loaded <body onload="loadTree('tvSelect' ...
- NFine - 全球领先的快速开发平台 Dapper Chloe
http://www.nfine.cn/ 技术交流群:549652099 出处:http://www.cnblogs.com/huanglin/ 分享一个轻型ORM--Dapper选用理由 Chloe
- Quartz集群原理及配置应用
1.Quartz任务调度的基本实现原理 Quartz是OpenSymphony开源组织在任务调度领域的一个开源项目,完全基于Java实现.作为一个优秀的开源调度框架,Quartz具有以下特点: (1) ...
- MySQL Replication浅析
MySQL Replication是MySQL非常出色的一个功能,该功能将一个MySQL实例中的数据复制到另一个MySQL实例中.整个过程是异步进行的,但由于其高效的性能设计,复制的延时非常小.MyS ...
- js实现鼠标的滑动
js实现鼠标的滑动 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...