提示:记住一个2×2的矩阵乘以一个 二维向量得到的结果就能充分理解下面的公式:
变换的形式:用一个矩阵乘以一个向量(要用相同维度的矩阵乘以相同维度的变量)
线性变换
a1 a2 x
乘
b1 b2 y
a1x+a2y,b1x+b2y
变换:
除了旋转
还有从三维世界到二维世界
1.缩放:
s=0.5
用矩阵表示
不均匀缩放:
sx=0.5 sy=1
2.反射(对称)
3.切变(拽着一角边拉)
(思路:所有点的y都是不变的,唯一变的是所有点的x值,x值是怎么变的呢?
当y为0的时候x不变,当y为1的时候x加1,当y大于零小于一 则x加a*y)
用矩阵表示
写变换的一种思路:找到变换前和变换后的一些规律
4.旋转(默认绕原点,默认逆时针)
推导
原坐标为(1,0) 经过转换后为(cos,sin)
得出这个公式
公式解开就为
也就得出了AC的值 剩下在找一个点计算剩下BD的值就可以了
这个旋转的逆矩阵只需要把左下角改为负,右上角改为正就可以
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
齐次坐标:因为平移变换比较特殊,所以有了齐次坐标这个概念
但是写不成刚才那种某个矩阵乘以一个向量的形式
只能写成这种(abcd矩阵为线性矩阵 啥事都不干1001):
因为平移变换不是线性变换
思考:能不能以上的变换的计算方法都统一(包括平移,包括缩放...)
答:可以增加一个维度
(点:增加1 向量:增加0 因为向量具有平移不变性)
引入齐次坐标的更多意义
点加点等于中点
仿射变换都可以协程矩阵乘以变量的形式
有平移无平移 有线性变换无线性变换
逆变换:把之前的变换反过来
各种变换的组合:
变换的顺序十分重要
先平移再旋转
先旋转在平移
【从右到左!!!!!!!!!】
意思是最右边的矩阵先乘 也就是说最右边应该是先旋转 旁边的矩阵则为移动矩阵
变换的分解:
问:如何使第一幅图沿左下角点旋转45度?
答:1.先把所有点都减去c 2.再旋转45度 3.再把所有点都加上c
矩阵形式(从右到左):
三维空间变换
大体差不多,但有几个重要的性质
1.旋转的逆矩阵等于旋转的转置矩阵(如下图) 也就是说旋转矩阵是个正交矩阵
2.
对于我们来说一个xyzw的点 在3维空间的点表示就为 把所有的都除以w(w一定为1 w为1代表是个点)
3.
对于 三维空间的旋转来说,查看旋转可以举起我们的的右手 比如说x转向z就是饶y轴旋转,y不变所以0 1 0
但为什么这里的沿y轴旋转跟其他的矩阵不一样,害得举起我们的右手,想想叉乘规则,
要得到z轴必须x叉乘y轴(逆时针),要得到x轴必须y叉乘z(逆时针),要得到y轴必须z叉乘x(顺时针)
这个时候聪明的小伙伴就已经看出来了
我们一定要记得 对于复杂的旋转我们一定可以分解为简单的旋转 也就是说任意的3d旋转
我们都可以写成绕x轴绕y轴绕z轴
α β γ 这三个角度又被称为欧拉角
如何证明呢?可以想象飞机的三个操作
pitch(俯仰)x轴不变 z转x轴
roll(翻滚)z轴不变 x到y轴
yaw(转身)...