3D数学 矩阵常用知识点整理
1.矩阵了解
1)矩阵的维度和记法
(先数多少行,再数多少列)

2)矩阵的转置
行变成列,第一行变成第一列...矩阵的转置的转置就是原矩阵
即 
3)矩阵和标量的乘法

4)矩阵和矩阵的乘法

例.[2,3]X[3,4] =[2,4]
矩阵的乘法不支持交换律,强调顺序,左乘和右乘是不一样的。
NXM阶与SXT阶矩阵相乘,必须满足M和S维度相同,乘法的结果是一个NXT矩阵。
5)单位矩阵
主对角线全部为1,非主对角线都为0,则为单位矩阵。
单位矩阵乘任何矩阵,任何矩阵都不变。

2.矩阵变换
1)2D变换
①绕坐标中心旋转a角度

②缩放矩阵
沿坐标轴缩放
(k分别为x轴,y轴上缩放因子)

沿任意N轴缩放

2)3D变换
①绕x,y,z轴旋转a度

②缩放矩阵

3)变换的种类
旋转 缩放 平移 镜像
切边(正方形上面拉一下,变成平行四边形,称之为切边)
投影(分为 平行投影:Unity中正交相机,对物体大小不产生变化;透视投影:近大远小效果)
可逆(施加了一个变换,还可以撤销)
总结分类:
线性变换
仿射变换:线性变换+平移。
所有的线性变换都是仿射变换,但并不是所有的仿射变换是线性变换。

4)常见变换组合
满足结合律 a*b*c = a*(b*c)

总结:一般可以使用矩阵转换工具进行变换。物体只需要乘一次工具矩阵即可完成变换。
3.变换深入
当我们使用2x2旋转过后,我们只需要旋转后的xy分量各自加上也可。但是没有一个统一的工具去解决。为了能够
把平移和其他的线性变换都组合在一起,利用矩阵这一工具去实现。我们需要把这个矩阵做一个扩展,在2d中平移需要扩展
为3x3的矩阵。
1)2D平移(3X3矩阵)

最后一个分量为何不取0?
第一次做了平移之后如果为0,又要做平移,参与第二次分量计算,因为其分量为0,都为0了。所以没有达到平移的目的。
2)3D平移(4X4矩阵)

3)3D 旋转+平移

4)透视投影(近大远小)

注意:这边本可以比较简单的使用等角三角形原理进行计算,但是还是使用矩阵来进行计算,因为可以方便的和其他
矩阵进行组合计算。

注意:这边的最后一个坐标分量的值不是1.
4.方阵
定义:行数和列数相等。
1)二阶方阵行列式

2)三阶方阵行列式

3)4阶行列式计算
代数余子式


从方阵中任选一行中数,用这一行中每个元素去乘每个代数余子式。
注意计算方式,正负值取决于行列下标(1开始的)
行列式性质:
矩阵积的行列式等于矩阵行列式的积:|AB| =|A||B|
矩阵转置的行列式等于原矩阵的行列式:|M的转置| =|M|
如果矩阵的任意行或列全为0,那么他的行列式等于0
“把矩阵的任意两行或两列进行交换”,行列式变负
任意行或列的非零积加到另一行或列上不会改变行列式的值
4)矩阵的逆
①逆的定义

对于一个矩阵是否有逆,如果一个方阵他的行列式为0,成为奇异矩阵,没有逆。
有逆,则他的行列式一定不为0.
代数余子式矩阵(对矩阵中每一个元素都取代数余子式)

标准伴随矩阵
当我们得到代数余子式矩阵之后,需要把这个代数余子式矩阵进行转置,称为标准伴随矩阵。

矩阵求逆 
定义检测

(主对角线都为1,其他都为0)
②矩阵逆 性质

③正交矩阵和逆
若方阵M是正交的,则当且仅当M与它的转置的乘积等于单位矩阵。
M*M的转置 = I(单位矩阵),即如果发现他是正交的,则可以把他的转置当做逆来使用。
应用:
仅仅拥有旋转,仅仅包含镜像。都是正交的。如果要撤销一个旋转,不用去求他的逆,直接用他的
转置就可以代替逆来使用。
3D数学 矩阵常用知识点整理的更多相关文章
- 3D数学 ---- 矩阵和线性变换[转载]
http://blog.sina.com.cn/s/blog_536e0eaa0100jn7c.html 一般来说,方阵能描述任意线性变换.线性变换保留了直线和平行线,但原点没有移动.线性变换保留直线 ...
- Koa 框架常用知识点整理
简介 Koa 就是一种简单好用的 Web 框架.它的特点是优雅.简洁.表达力强.自由度高.本身代码只有1000多行,所有功能都通过插件实现. 学前准备 检查Nodejs版本 打开cmd命令行窗口nod ...
- Flow 常用知识点整理
Flow入门初识 Flow是facebook出品的JavaScript静态类型检查工具. 由于JavaScript是动态类型语言,它的灵活性也会造成一些代码隐患,使用Flow可以在编译期尽早发现由类型 ...
- JavaScript常用知识点整理——思维导图
如图 思维导图图片链接 http://www.edrawsoft.cn/viewer/public/s/b8327462051289 有道云笔记图片链接 http://note.youdao.com/ ...
- 3D数学读书笔记——矩阵基础
本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031 矩 ...
- 3D数学读书笔记——矩阵基础番外篇之线性变换
本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...
- 数学:3D和矩阵
跟紧工作需求学习,于是抽了点时间看了看用于2D3D转换的矩阵内容. 矩阵在3D数学中,可以用来描述两个坐标系间 的关系,通过定义的运算能够把一个坐标系中的向量转换到另一个坐标系中.在线性代数中,矩阵就 ...
- python基础全部知识点整理,超级全(20万字+)
目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...
- Python--matplotlib绘图可视化知识点整理
from:https://segmentfault.com/a/1190000005104723 本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 强烈推荐ipython无论你 ...
随机推荐
- C++的find函数使用小技巧
一个小问题:原始字符串如CRYPT,FUNCTION,我要确定里面是否存在CRYPT,于是调用C++的find()函数,结果判断是不存在,怎么回事? 我的判断代码if(strUseFlagsTmp.F ...
- 学习MySQL我们应该知道哪些东西?
随笔:小编由于年前一直在找工作,而年后找到工作后又一直在忙工作,所以也很少有时间给大家写点什么,总的来说呢,回顾一下之前面试的几次经历,也曾小小的总结了一下自己的不足,发现自己虽然一直在原有的公司(外 ...
- .net捕捉全局未处理异常的3种方式
前言: 我们在实际项目开发中,经常会遇到一些不可预见的异常产生,有的异常在程序运行时就对其进行处理(try)但是,有的程序不需要每一个地方都用try进行处理,那么针对这种情况,可以参照下面的方式,实现 ...
- php使用http_build_query,parse_url,parse_str创建与解析url详解
1.http_build_query string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $ ...
- C++ 文件流的详解
部分内容转载:http://blog.csdn.net/kingstar158/article/details/6859379 感谢追求执着,原本想自己写,却发现了这么明白的文章. C++文件流操作是 ...
- Maven学习(二)-- Maven项目构建过程练习
摘自:http://www.cnblogs.com/xdp-gacl/p/4051690.html 一.创建Maven项目 1.1.建立Hello项目 1.首先建立Hello项目,同时建立Maven约 ...
- String的indexOf()用于获取字符串中某个子字符串的位置
indexOf作用:用于检索一个字符串在另一个字符串中的位置. indexOf的几个重载方法如下: int indexOf(String str) 意思为在字符串中检索str第一次出现的位置,如果找 ...
- 项目在tomcat里运行一段时间总是自动崩掉的问题排查与解决
最近的检验系统上线一段时间后,发现系统访问不了,tomcat总是会自动崩掉,一般遇到这种问题,程序员的第一反应都肯定是内存溢出. 确实是,但是java里内存分好几种,堆内存.栈内存.静态内存区等等,下 ...
- java序列化反序列化深入探究(转)
When---什么时候需要序列化和反序列化: 简单的写一个hello world程序,用不到序列化和反序列化.写一个排序算法也用不到序列化和反序列化.但是当你想要将一个对象进行持久化写入文件,或者你想 ...
- Oracle-01:基础命令小结
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 记录一下我的Oracle学习之路,详细的安装教程忙完这俩天会认真总结一版 本次记录这次学习cmd基础命令 一, ...