基础:

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

行向量和列向量:只有单行的向量称为行向量,只有单列的称之为列向量。

相等

维数和元素都相等

数乘(与标量相乘)

每一个元素与标量相乘

加法(矩阵+矩阵=矩阵)

两个矩阵相应元素想加所得的矩阵,必须维数相等

矩阵乘法(矩阵*矩阵=矩阵)

条件: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 矩阵相关推荐

  1. C# DirectX 开发2 - 定义一个矩阵和赋值

    接此, https://blog.csdn.net/bcbobo21cn/article/details/44890937 在C#版DirectX中,使用 Microsoft.DirectX.Matr ...

  2. OpenGL, GLSL, DirectX, HLSL中的矩阵存储形式

    (原文地址:http://alvincc-tech.blogspot.com/2010/10/opengl-glsl-directx-hlsl.html) OpenGL, GLSL, DirectX, ...

  3. 两个列向量相乘怎么计算_矩阵:行主序、列主序、行向量、列向量

    看龙书的时候发现一个矩阵在传入Shader之前都要转置一下,很好奇为什么要有一步这样的操作. 行主序和列主序 行主序指矩阵在内存中逐行存储,列主序指矩阵在内存中逐列存储. 行主序矩阵内存布局: 列主序 ...

  4. 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)...

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8523341 作者:毛星云(浅墨 ...

  5. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引...

    Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十五章:第一人称摄像机和动态索引 原文:Introduction to 3 ...

  6. DirectX下 Viewing Frustum 的详细实现

    本文大部分内容翻译自Gil Gribb和Klaus Hartmann合写的<Fast Extraction of Viewing Frustum Planes from the World-Vi ...

  7. DirectX标准规定 DirectX和OpenGL的不同

    DirectX标准规定 DirectX使用左手坐标系. X轴正向指向右,Y轴正向指向上,Z轴正向垂直纸面向内. 编写Direct3D应用程序时,通常只使用4×4的矩阵和1×4的行向量,相乘时行向量在前 ...

  8. C# DirectX编程对基本三角形应用平移变换矩阵

    前文: https://blog.csdn.net/bcbobo21cn/article/details/112729045 平移变换矩阵的定义如下: 除了对角全为1,以及px.py.pz之外,都为0 ...

  9. 3D 投影矩阵学习1

    先看一下名词: 在矩阵数学中,也有一个名词叫投影矩阵,其定义为:     若矩阵A既是对称矩阵,又是幂等矩阵,则称A为投影矩阵. 这里说的是3D世界中的投影矩阵:其作用是帮助把3D物体显示在2维计算机 ...

最新文章

  1. 漫画:7 种编程语言的学习曲线
  2. c语言实现数码管显示qq号,各位大神,如何用C语言实现在数码管上实现1234同时亮...
  3. SAP RETAIL - How to activate SAP Retail system
  4. Cadence Orcad 无法启动出现Capture.exe找不到cdn_sfl401as.dll问题
  5. 职高计算机专业可以考本科吗,职业高中和普通高中的区别 职业高中能考本科吗...
  6. 利用Matlab求解线性规划问题
  7. arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...
  8. linux 多线程实现倒计时,Linux用脚本实现“时分秒“倒计时功能
  9. python中使用“if __name__ == '__main__'”语句的作用
  10. Eclipse4.5 mars 配置Velocity插件
  11. hibernate 基础方法(一)及Hibernate中java对象的三种状态
  12. datax(3): win环境cmd乱码
  13. A成分/光谱/质谱/能谱/形貌/物相结构/热重七大材料测试方法汇总,必收藏!!!
  14. node抓取王者荣耀英雄资料库
  15. 【2022年火爆的商铺共享WiFi系统源码】
  16. C语言用for循环求最大公约数,C语言循环结构 -C语言求最大公约数
  17. 还记得啤酒和尿不湿的故事吗?我用Python带你一起玩玩关联规则!
  18. autojs编写的网易云音乐和视频搜索脚本源代码免费分享开源
  19. 用PYQT5写一个登陆界面
  20. 从零开始学习Linux运维,成为IT领域翘楚(九)

热门文章

  1. java钱币换算_Java编写钱币转换为大写程序
  2. mysql 消息队列_MYSQL模拟消息队列(转载) | 学步园
  3. ajax定时器怎么写,js定时器怎么写?就是在特定时间执行某段程序
  4. sql怎么撤回update_腾讯SQL“现役运动员”给你的实践小技巧
  5. java http请求原理_浅谈Spring Cloud zuul http请求转发原理
  6. 单利 java_Java设计模式-单利模式
  7. android 绘画笔迹回放_随时记录分享书写笔迹,EverPEN高级版套装体验
  8. Springmvc借助SimpleUrlHandlerMapping实现接口开关功能
  9. 下载国外网站资料需java_Java开发必知道的国外10大网站
  10. latex 算法_GitHub项目awesome-latex-drawing新增内容(四):绘制贝叶斯网络