线性代数
向量

点乘 Dot Product

叉乘 Cross Product
叉乘作用:寻找同时与AB都垂直的方向(AB平面的法线方向)
向量旋转(叉乘应用)
理论上在ab两个向量的角平分面上任何一个方向都可以作为旋转轴来进行旋转
这时候找ab叉乘方向作为轴进行旋转,旋转最少

如何旋转一个向量
例如绕着u为轴进行旋转
可以把旋转拆分成两部分
v方向是 UcrossA的方向(其实就是圆盘的切线方向,也就是说叉乘可以求切线方向),t方向是UcrossV(与切线垂直)
从俯视图来看
这个推导结果就是Rodrigues’s rotation formula(罗德里格斯旋转公式)

正交基
正交基的要求
一个向量可以用正交基的线性组合来表示
两个向量的点乘可以展开
最后一项为0了
叉乘也可以,去掉叉乘自己=0的项,化简后

矩阵
一些会用到的特殊矩阵(单位/对角/对称/反对称)

转置

运算
一些运算工具
叉乘计算可以用矩阵来表示,这里的a用一个反对称阵来表示了
把叉乘计算转为矩阵运算后,旋转一个向量的罗德里格斯旋转公式可以表示为Ra,这里的R就是空间中沿着某个单位轴u,旋转的旋转矩阵 
正交矩阵
定义:矩阵的每一列都是互相正交的向量
正交阵的逆=正交阵的转置 正交阵转置*正交阵 = 单位阵

矩阵的行列式
三×四列矩阵的行列式怎么算😄
行列式的性质
叉乘同样可以用行列式来计算
特征值
比较重要的结论是,3x3的正交阵肯定有一个特征值是1或-1

刚体变换 Rigid Transformation

缩放
相当于把向量乘以一个对角阵,每一行表示缩放比例

平移
平移可以直接加

旋转
旋转矩阵有一些性质.旋转矩阵是正交阵,行列式一定是+1,刚性变化,不会改变向量的模长
旋转的组合,毕竟是左乘肯定得反着写
沿着坐标轴旋转的旋转矩阵
分别沿着3个轴旋转结果,与沿着某个计算出来的轴旋转可以得到一样的结果
旋转矩阵肯定有一个特征值为1的特征值. RU=1*U(特征值的概念),这里的特征向量U在左乘R后保持不变,可以理解为U方向就是旋转轴
旋转轴和旋转角度可以通过各种线性代数公式推导出来.R-1=RT所以左右同乘以RT.得到某个反对称阵 * 对称轴U = 0.
反对称阵可以写成叉乘
叉乘=0表示两个向量共线
所以说这个反对称阵对应的叉乘的u’单位化后就是对称轴.谁想出来的😄
坐标转换
全局和模型坐标系的转换
3D旋转
旋转的插值不能线性插值.下面这种插值是错的
得出结论,用旋转矩阵来表达旋转时的缺点

欧拉角(Euler Angles)来表示旋转
欧拉角(Euler Angles)是 3D 旋转中最直观的表示方式(通过绕三个正交轴的依次旋转角度定义)
但它存在一个致命缺陷 ——万向锁(Gimbal Lock,也称 Gimbal Lock)
万向锁把中间变换设置为90°时,另外两个旋转变换都只会在同一个方向上进行旋转,这就是万向锁.
https://www.bilibili.com/video/BV1Nr4y1j7kn/?spm_id_from=333.337.search-card.all.click&vd_source=9df9034e2f1978b1018f5b387ec3eacd解释的很好,其实调整第一个轴,结果却在最后一个轴上旋转的原因是: 调整第一个轴本来就是在第一个轴上旋转,但是调整后又经过第二个轴的旋转,把他带到了第三个轴的旋转上看上去就像是在第三个轴旋转.
欧拉角的优缺点:

旋转轴和旋转角度来表示旋转
前边说过了
优缺点:

四元数 Quaternions
复数与二维旋转
复数表示为
复数用向量来表示就是
复平面:x轴为实轴,y轴为虚轴
复数的乘法:
可以看出复数的可以写出一个矩阵和一个向量的结果.矩阵代表z1,向量代表z2.
也就是说z1乘以z2等价于给z2左乘一个变换矩阵
把表示z1的这个变换矩阵做一个变形
从下图可以看出根号下平方和表示这个复数的模长
并且
带入刚才的矩阵
左边部分是一个缩放矩阵,右边刚好是2D旋转公式. 所以说一个复数可以看作是先旋转角度再缩放的变换矩阵
所以 我们要对一个向量旋转时,先把他看成一个复数
给他左乘一个复数就能达到旋转效果
或者可以理解为2D旋转公式
中的这个旋转矩阵是可以写出复数形式的
三维旋转
轴角式:绕着某个旋转轴进行旋转
欧拉角:就是上边讲的那个,用它的缺点就是有万向锁,四元数来解决它
在轴角表示法中,确定一个旋转需要一个旋转轴(3个自由度)旋转角度(1个自由度),四个自由度来表示
旋转分解:把向量v分解为平行于旋转轴和垂直于旋转轴的两个分量
分解过程有具体公式实现
下面就只需要分别讨论两个分量的旋转
对于垂直分量,就是在底面投影形成的一个圆形上的旋转,w可以通过叉乘获得
在底盘上可以把旋转结果分解到垂直的两个方向上
对于平行分量来说,它并没有旋转,所以
最终组合两个分量并化简
额,其实就是上边讲的Rodrigues旋转公式(⊙﹏⊙)
四元数定义
四元数的性质:
四元数可以写出一个向量
可以用四元数来表示向量和标量
用向量表示后,乘法就表示为
四元数没有交换律,有结合律
单位四元数的逆=共轭
类似于单位复数可以组成复平面的一个圆,单位四元数也可以组成4D空间的球壳
对于任何一个单位四元数都可以写出下面这个形式
它和轴角表示的u和斯塔有相同的信息量.这样的对应可得 一个轴角表示可以转化为一个四元数表示
如果把一个需要被旋转的向量表示为纯四元数(标量=0),那么旋转q作用到它的计算方式为
四元数可以旋转叠加

四元数的插值
在球壳上才是合法的单位四元数,所以线性插值的qt是不合法的
所以每次插值都需要进行单位化,但是插值速度是不恒定的
为了实现常数速度的插值,需要用slerp
其中a和b可以推导出来
四元数的优点
