Featured image of post GAMES105 计算机角色动画基础(数学基础)

GAMES105 计算机角色动画基础(数学基础)

线性代数

向量

在这里插入图片描述

点乘 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可以推导出来 在这里插入图片描述 四元数的优点 在这里插入图片描述

📚 文章数: 72 ✍️ 总字数: 245.55K