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,0)
1*4向量在3d坐标系中向量的表示方法 v = (v1,v2,v3,1) 扩展后的向量称为齐次向量,因为齐次向量即可以表示点,又可以表示向量
向量处于齐次空间:
平移矩阵
要想将向量(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 矩阵相关推荐
- C# DirectX 开发2 - 定义一个矩阵和赋值
接此, https://blog.csdn.net/bcbobo21cn/article/details/44890937 在C#版DirectX中,使用 Microsoft.DirectX.Matr ...
- OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式
(原文地址:http://alvincc-tech.blogspot.com/2010/10/opengl-glsl-directx-hlsl.html) OpenGL, GLSL, DirectX, ...
- 两个列向量相乘怎么计算_矩阵:行主序、列主序、行向量、列向量
看龙书的时候发现一个矩阵在传入Shader之前都要转置一下,很好奇为什么要有一步这样的操作. 行主序和列主序 行主序指矩阵在内存中逐行存储,列主序指矩阵在内存中逐列存储. 行主序矩阵内存布局: 列主序 ...
- 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)...
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8523341 作者:毛星云(浅墨 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...
- DirectX下 Viewing Frustum 的详细实现
本文大部分内容翻译自Gil Gribb和Klaus Hartmann合写的<Fast Extraction of Viewing Frustum Planes from the World-Vi ...
- DirectX标准规定 DirectX和OpenGL的不同
DirectX标准规定 DirectX使用左手坐标系. X轴正向指向右,Y轴正向指向上,Z轴正向垂直纸面向内. 编写Direct3D应用程序时,通常只使用4×4的矩阵和1×4的行向量,相乘时行向量在前 ...
- C# DirectX编程对基本三角形应用平移变换矩阵
前文: https://blog.csdn.net/bcbobo21cn/article/details/112729045 平移变换矩阵的定义如下: 除了对角全为1,以及px.py.pz之外,都为0 ...
- 3D 投影矩阵学习1
先看一下名词: 在矩阵数学中,也有一个名词叫投影矩阵,其定义为: 若矩阵A既是对称矩阵,又是幂等矩阵,则称A为投影矩阵. 这里说的是3D世界中的投影矩阵:其作用是帮助把3D物体显示在2维计算机 ...
最新文章
- 漫画:7 种编程语言的学习曲线
- c语言实现数码管显示qq号,各位大神,如何用C语言实现在数码管上实现1234同时亮...
- SAP RETAIL - How to activate SAP Retail system
- Cadence Orcad 无法启动出现Capture.exe找不到cdn_sfl401as.dll问题
- 职高计算机专业可以考本科吗,职业高中和普通高中的区别 职业高中能考本科吗...
- 利用Matlab求解线性规划问题
- arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...
- linux 多线程实现倒计时,Linux用脚本实现“时分秒“倒计时功能
- python中使用“if __name__ == '__main__'”语句的作用
- Eclipse4.5 mars 配置Velocity插件
- hibernate 基础方法(一)及Hibernate中java对象的三种状态
- datax(3): win环境cmd乱码
- A成分/光谱/质谱/能谱/形貌/物相结构/热重七大材料测试方法汇总,必收藏!!!
- node抓取王者荣耀英雄资料库
- 【2022年火爆的商铺共享WiFi系统源码】
- C语言用for循环求最大公约数,C语言循环结构
-C语言求最大公约数
- 还记得啤酒和尿不湿的故事吗?我用Python带你一起玩玩关联规则!
- autojs编写的网易云音乐和视频搜索脚本源代码免费分享开源
- 用PYQT5写一个登陆界面
- 从零开始学习Linux运维,成为IT领域翘楚(九)
热门文章
- java钱币换算_Java编写钱币转换为大写程序
- mysql 消息队列_MYSQL模拟消息队列(转载) | 学步园
- ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序
- sql怎么撤回update_腾讯SQL“现役运动员”给你的实践小技巧
- java http请求原理_浅谈Spring Cloud zuul http请求转发原理
- 单利 java_Java设计模式-单利模式
- android 绘画笔迹回放_随时记录分享书写笔迹,EverPEN高级版套装体验
- Springmvc借助SimpleUrlHandlerMapping实现接口开关功能
- 下载国外网站资料需java_Java开发必知道的国外10大网站
- latex 算法_GitHub项目awesome-latex-drawing新增内容(四):绘制贝叶斯网络