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 ...
随机推荐
- 注意!你的Thread.Abort方法真的让线程停止了吗?
大家都知道在C#里面,我们可以使用 Thread.Start方法来启动一个线程,当我们想停止执行的线程时可以使用Thread.Abort方法来强制停止正在执行的线程,但是请注意,你确定调用了Threa ...
- NOIP201105铺地毯
NOIP201105铺地毯 [问题描述]为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有n 张地毯,编号从1 到n.现在将这些地毯按照 ...
- innodb buffer pool flush机制
参考印风的博客: FLUSH操作的类型,总的来说,有三种刷新类型 BUF_FLUSH_LRU:表示从Buffer Pool的LRU上扫描并刷新 BUF_FLUSH_LIST:表示从Buffer P ...
- windows win10上传文件到linux服务器
1.最直接当然使用终端secucrt和xshell putty之类的,然后使用sz rz 2.如果服务器端不支持sz rz可以使用scp命令,下面这个pscp.exe就是支持scp的,基于ssh,很好 ...
- Asp.net Vnext Routing
概述 本文已经同步到<Asp.net Vnext 系列教程 >中] ASP.NET 路由系统是主要负责两个操作: 它将传入的 HTTP 请求映射到路由处理程序给出的路由的集合. 路由系统的 ...
- recycleview中使用checkbox导致的重复选中问题
参考博文:http://www.myexception.cn/mobile/1852852.html 在使用RecycleView做仿微信图片选择器,其中条目中使用了checkbox,在选中时由于ho ...
- Prince2七大原则(3)
Prince2七大原则(3) 我们先来回顾一下,PRINCE2七大原则分别是持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁. 第三个原则:明确定义的角色和职责. 项目离不开 ...
- Java8新特性之一、时间日期API
package com.effective.common.base.date; import java.time.Instant; import java.time.LocalDate; import ...
- Ajax中GET和POST的区别
Get方式: 用get方式可传送简单数据,但大小一般限制在1KB下,数据追加到url中发送(http的header传送),也就是说,浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行中的 ...
- javaWEB中的HttpServlet(企业开发使用)
HttpServlet: 1). 是一个 Servlet, 继承自 GenericServlet. 针对于 HTTP 协议所定制. 2). 在 service() 方法中直接把 ServletReuq ...