[3D数学基础:图形与游戏开发]读书笔记 第9章(矩阵的更多知识、行列式、逆、正交矩阵、4x4齐次矩阵)未完待续
第9章 矩阵的更多知识
矩阵的行列式
- 任何一个
方阵
都存在一个标量,称为行列式,非方阵的行列式是未定义
的 2x2矩阵行列式
3x3矩阵行列式
余子式
从M去除第i行
和第j列
剩余的矩阵
,代数余子式
是标量
如何求出n*n行列式
这里求的是4x4行列式
行列式的重要性质
- 矩阵积的行列式等于矩阵行列式积
|AB| = |A||B|
,这个可以拓展到多矩阵情况 - 矩阵转置的行列式等于原矩阵行列式 ∣ M T ∣ = ∣ M ∣ |M^T| = |M| ∣MT∣=∣M∣
- 矩阵任意一行或任意一列全为0,行列式为0
- 交换矩阵的任意两行或两列,行列式变负
行列式几何解释
2D中
基向量为两边的平行四边形有符号的面积,有符号面积
是指如果平行四边形相对于原来的方位翻转,面积将为负3D中
行列式等于变换后
的基向量平行六面体的有方向体积,有方向体积是指
如果变换后平行六面体由里向外翻转,体积将为负行列式的绝对值
与面积和体积改变有关,行列式的符号
与变换矩阵是否包含镜像或者投影
,如果行列式等于0
,说明变换包含投影
,如果行列式为负
说明包含镜像
矩阵的逆
- 方阵的逆和原方阵等于
单位矩阵
- 如果一个矩阵有逆,那么可以称为它是
可逆的或者是非奇异的
,如果没有逆,说法刚好相反 奇异矩阵行列式为零
,检测行列式的值,可以判断矩阵是否可逆标准伴随矩阵
是M的代数余子式矩阵的转置矩阵,记作adjM
- 一旦知道了
标准伴随矩阵
就可以通过除以M的行列式求得矩阵的逆
其他求矩阵逆的方式
高斯消元法矩阵转置的逆
等于矩阵逆的转置
矩阵乘积的逆
等于相反顺序矩阵逆的乘积
矩阵的逆的几何解释
变换撤销
正交矩阵
- 方阵M是正交的,当且仅当M和它的转置矩阵乘积等于单位向量 M M T = I MM^T=I MMT=I
- 根据上面矩阵逆的性质,矩阵转置的逆等于矩阵逆的转置,可以求得
正交矩阵的转置等于正交矩阵的逆
M T = M − 1 M^T = M^{-1} MT=M−1
正交矩阵的几何解释
- 正交矩阵对于求矩阵的逆很方便,但是如果知道这个矩阵是正交的呢?
根据上面的计算可以得知,一个矩阵正交必须满足:
矩阵每一行都为单位矩阵
矩阵所有行互相垂直
- 旋转和镜像是正交的,如果M是正交的 M T M^T MT也是正交的
正交基
一组向量互相垂直但不全是单位向量标准正交基
一组单位向量互相垂直
矩阵的正交化
- 有一些矩阵可以略微违反了正交矩阵,这时可能需要将矩阵正交化,可以采用
施密特正交化和其改进方式
,这个我没看太懂,后面碰到了在研究
4x4齐次矩阵
首先明确一点4D向量和4x4矩阵只是对3D运算的一种方便的记法
2D中的齐次坐标
,形如(x, y, w),想象在w=1平面的3D空间中,齐次坐标表示为(x, y, 1),对于不在w=1平面上的点,投影到w=1平面,所以(x, y, w)在2D实际坐标为(x/w, y/w, w)
3D中的齐次坐标同样(x, y, z, w)在3D实际点坐标为(x/w, y/w, z/w, w)
4x4平移矩阵
- 首先带着问题,为什么要弄出来一个4D坐标?
因为想用矩阵的乘法来代表平移,矩阵的乘法可以通过合并变换矩阵,达到一个变换矩阵包含多种变换(比如即旋转有平移)
- 如下图,可以发现这个4x4的矩阵其实是4D的切变空间(对比第8章的切变内容)
- 其中
w
变量可以开关平移部分,因为有些向量代表方向
,而有些代表点
一般仿射变换(包含平移)
- 例如
绕不通过原点的轴旋转
沿不穿过原点的平面缩放
沿不穿过原点的平面镜像
想不穿过原点的平面正交投影
- 基本思想为:
将变换的中心点,平移到原点,然后进行之前的线性变换,然后再将中心点平移回原来位置
形如 T R T − 1 TRT^{-1} TRT−1,T为平移矩阵,R是线性变换
透视投影
- 学习
透视投影
结合正交投影(平移投影)
,正交投影的投影线是平行的
,而透视投影的投影线相交于一点
称为投影中心
,如书的图
投影中心
位于投影平面之前,所以投影平面上图像是翻转
的。当物体远离投影中心,正交投影的投影图像大小不变,而透视投影的投影图像变小了(远离了中心点,投影线和中心的夹角变小了,投射到平面上自然就变小了
)
小孔成像
[3D数学基础:图形与游戏开发]读书笔记 第9章(矩阵的更多知识、行列式、逆、正交矩阵、4x4齐次矩阵)未完待续相关推荐
- 3d数学基础:图形和游戏开发(第2版)_游戏引擎编程需要哪些基本数学知识?
现今,想要从头写一个功能强大的3D引擎,个人的力量恐怕难以胜任,即使能力足够,时间恐怕也不允许.在这个美好的开源时代,你只需具备修改各种引擎的能力便足以满足开发游戏的各项需求.现代游戏引擎的复杂级别已 ...
- 3d数学基础图形与游戏开发第二版_游戏开发完整学习路线,都在这里了
在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的. 平台与编程语言选 ...
- 3d数学基础图形与游戏开发 英文版_1850款文字标题字幕条,AE图形预设包,logo生成神器...
2019最新1850款组文字LOGO动画预设,一键生成! 包含图形元素/字幕/logo/动画转场/背景等 所有的元素都支持AE和PR 所有元素的 颜色.位置.大小.文字.Logo等 都可以修改,包含G ...
- 3d数学基础:图形和游戏开发(第2版)_人教版五年级数学上册教学计划进度表
文末有打印资料的方法 往期回顾: 统编版五年级语文上册第1课<白鹭>视频+课件+练习 统编版五年级语文上册第2课<落花生>视频+课件+练习 统编版五年级语文上册第3课<桂 ...
- 3D数学基础:图形与游戏开发---随笔五
向量运算 5.1 线性代数与几何 数学中专门研究向量的分支称作线性代数. 5.2 符号约定 变量是代表未知量的占位符.本书用不同的字体来区分不同的变量: 标量,用斜体的小谢罗马或者希腊字母表示,如a. ...
- 3D数学基础:图形与游戏开发---随笔四
向量 向量是2D.3D数学研究的标准工具. 4.1 向量--数学定义 对数学家而言,向量就是一个数字列表,对程序员而言则是另一种相似的概念--数组.数学上,一个向量就是一个数组. 数学上,区分向量和标 ...
- 3D数学基础:图形与游戏开发---随笔三
多坐标系 3.1 为什么要使用多坐标系? 不同的情况下使用不同的坐标系更加方便.(定义一个坐标系是为了我们方便描述一件事情,而在不同的领域它有不同的作用,比如相对论) 3.2 一些有用的坐标系 世界坐 ...
- 3D数学基础:图形与游戏开发---随笔二
笛卡尔坐标系统 笛卡尔不仅创立了解析集合,将当时完全分离的代数学和几何学联系到一起,还在回答"怎样判断某件事物是真的?"这个哲学问题上迈出了一大步,使后来的一代代哲学家能够轻松起来 ...
- 3D数学基础:图形与游戏开发---随笔一
简介 1.1 什么是3D数学 3D数学是一门和计算几何相关的学科,计算几何则是研究用数值方法解决几何问题的学科.这两门学科广泛应用于那些使用计算机来模拟3D世界的领域. 1.3 阅读本书需要的基础知识 ...
最新文章
- 还在学JVM?我都帮你总结好了(附脑图)
- 深度Linux13,Ubuntu 13.04安装Linux Deepin特色软件
- 上接稳扎稳打Silverlight(20) - 2.0通信之WebClient, 以字符串的形式上传/下载数据
- 如何用#define宏定义多行函数
- 超酷的超级DataGrid
- 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数
- Kubernetes 网络概念及策略控制(叶磊)
- pu learning的建模实践,半监督学习的好方法!
- mysql select array_从数据库select查询出来的数组
- python之eval函数,map函数,zip函数
- 3.3.1网络原理数据链路层之差错控制(检错编码和纠错编码)->(奇偶校验码、CRC循环冗余码、海明码)(转载)
- TThread类详解转
- easyui combobox根据输入内容动态查找_制作智能下拉菜单,自动筛选想要输入的数据,同事都看呆了...
- 现在Web前端培训,哪个机构比较好?
- App安全软件防护能力检测
- 台式计算机睡眠了怎么唤醒,分享大家几种电脑深度睡眠怎么唤醒方法
- java调用ltp_LTP随笔——本地调用ltp之ltp4j
- 推荐一个好用的开源的报表平台——JNPF可视化平台
- vue - vue中使用西瓜播放器xgplayer
- web富文本编辑器的选择のxheditor