基本概念
旋转的表示方法——矩阵旋转和欧拉旋转和四元数旋转
- 矩阵旋转使用了一个4*4大小的矩阵来表示绕任意轴旋转的变换矩阵
- 优点:旋转轴可以是任意量
- 缺点:旋转其实只需要知道一个向量+一个角度,一共4个值的信息,但矩阵法却使用了16个元素;而且在做乘法操作时也会增加计算量,造成了空间和时间上的一些浪费
- 欧拉选择则是按照一定的坐标轴顺序(例如先x、再y、最后z)、每个轴旋转一定角度来变换坐标或向量,它实际上是一系列坐标轴旋转的组合。
- 四元数本质上是一种高阶复数,是一个四维空间,相对于复数的二维空间。
- 优点:可以避免万向节锁现象;只需要一个4维的四元数就可以执行绕任意过原点的向量的旋转,方便快捷,在某些实现下比旋转矩阵效率更高;可以提供平滑插值
复数与矩阵的关系
z=a+bi的基是[1,i],因为:
所以
3D旋转公式
欧拉角
绕x轴:
绕y轴:
绕z轴
绕任意轴旋转(矩阵)
绕任意轴旋转(四元数)
缩放公式
2D沿坐标轴缩放: S(kx,ky)=
2D沿任意轴n缩放k:
3D沿任意轴n缩放k:
投影
向任意指向投影2D矩阵
向任意平面投影的3D矩阵
镜像(倒影,反射)
将投影的推导公式中的缩放因子k设置为0就是投影,设置为-1就是镜像了
沿任意轴镜像的2D矩阵:
沿任意轴镜像的3D矩阵
变换公式
旋转的表示方法——矩阵旋转和欧拉旋转和四元数旋转
- 矩阵旋转使用了一个4*4大小的矩阵来表示绕任意轴旋转的变换矩阵
- 优点:旋转轴可以是任意量
- 缺点:旋转其实只需要知道一个向量+一个角度,一共4个值的信息,但矩阵法却使用了16个元素;而且在做乘法操作时也会增加计算量,造成了空间和时间上的一些浪费
- 欧拉角则是按照一定的坐标轴顺序(例如先x、再y、最后z)、每个轴旋转一定角度来变换坐标或向量,它实际上是一系列坐标轴旋转的组合。
- 四元数本质上是一种高阶复数,是一个四维空间,相对于复数的二维空间。
- 优点:可以避免万向节锁现象;只需要一个4维的四元数就可以执行绕任意过原点的向量的旋转,方便快捷,在某些实现下比旋转矩阵效率更高;可以提供平滑插值
复数与矩阵的关系 z=a+bi的基是[1,i],因为: 所以
2D 旋转公式(矩阵型) 2D 旋转公式(复数积型) 2D 旋转公式(指数型) 旋转的复合 v''=(z2z1)v=cos(θ2+θ1)-isin(θ2+θ1) 向量规范化或标准化 线性映射 向量映射:L:V->W(V映射到线性空间W) 正交投影(也称为平行投影):不会出现透视投影的近大远小的扭曲线性 三角函数 正弦函数y在[-1,1]范围,周期是T=2π 反正弦函数y在[-π/2,π/2]范围,无周期 二倍角公式 正弦:sin2θ=2sinθcosθ 余弦: 正切: 3D旋转公式 绕x轴: 绕y轴: 绕z轴 绕任意轴旋转 投影 v∥是v在n上的投影,则:v∥=(v*n)n
叉乘 a与b叉乘得c,那么c垂直与a与b ||axb||=||a||||b||sinθ 叉乘最重要的是创建垂直于平面的向量 如果n平行于v∥,则:n×v∥=0
缩放 2D沿坐标轴缩放: S(kx,ky)= 2D沿任意轴n缩放k: 3D沿任意轴n缩放k: 投影 向任意指向投影2D矩阵 向任意平面投影的3D矩阵 镜像(倒影,反射) 将投影的推导公式中的缩放因子k设置为0就是投影,设置为-1就是镜像了 沿任意轴镜像的2D矩阵: 沿任意轴镜像的3D矩阵 矩阵的逆 M的标准伴随矩阵是代数余子式矩阵的转置 伴随矩阵: 撤销变换 正交矩阵 4D齐次矩阵 https://blog.csdn.net/saltriver/article/details/79680364 平移是矩阵加法,加入一个维度编程矩阵乘法变换,跟其他变换统一 将4D齐次向量变换到3D中时,要先把4D向量除以w 4X4矩阵实现3D平移 透视投影(用到相似三角形) 向z=d平面投影 用4X4矩阵向z=d平面投影(有4D齐次变换到3D公式,得) 欧拉角与四元数 https://www.zhihu.com/question/47736315 欧拉角:非常直观地描述旋转的角度;物体坐标系与世界坐标系重叠,第一次旋转绕世界轴旋转,然后然物体坐标轴旋转 万向节锁:轴环重叠导致失衡 求复数的模 2D旋转公式:矩阵形式 引入复数q和用2X2矩阵达到的效果一样 p=x+yi q=cosθ+isinθ p'=pq 四元数的虚部i,j,k的关系 四元数的四个值 四元数的模 三角公式 四元数的共轭和逆 共轭: 逆: 四元数乘法的标准定义 四元数乘积的模等于模的乘积 四元数乘积的逆等于各个四元数的逆以相反的顺序相乘 四元数点乘 四元数对数 logq=log([cosθ nsinθ])=[0 θn] 3D 旋转公式(向量型,正交情况) D 旋转公式(向量型,一般情况,也叫做「Rodrigues’Rotation Formula」) 两个纯四元数 𝑣 = [0, v], 𝑢 = [0, u]相乘 𝑣𝑢 = [−v · u, v × u] 所以: 𝑢𝑣⊥= [−u · v⊥, u × v⊥] = [0, u × v⊥]= u × v⊥ 复数的乘法的几何意义可以理解为缩放与旋转的复合 如果复数的模=1,那么就是纯旋转 3D 旋转公式(四元数型,平行情况) 𝑣′∥= 𝑣∥ 3D 旋转公式(四元数型,一般情况) 3D 旋转公式(矩阵型) 对任意四元数 𝑞1 = [𝑠, v]、𝑞2 = [𝑡, u]: 旋转的复合 3D 旋转公式(指数型) 插值的公式 线性插值 正规化线性插值 球面线性插值 球面四边形插值 已知数据 (x0, y0) 与 (x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的y值 复数相乘和矩阵相乘是变换的不同表达形式