空间变换其参数化

目录

什么是欧式变换与变换矩阵

什么是轴角

什么是欧拉角

什么是四元数

其他空间变换​编辑​编辑​编辑


什么是欧式变换与变换矩阵

两个坐标系之间的运动是由一个旋转和一个平移所组成,我们称这种运动为刚体运动。由于刚体运动保持了向量的长度和夹角,相当于我们把一个刚体原封不动地进行移动或旋转,不改变它自身的形状,因此它是一种欧式变换。假设单位正交基(e_1,e_2,e_3)经过了一次旋转变成(e_1^′,e_2^′,e_3^′),那么对于向量a而言,它在两个坐标系下的坐标分别为(a_1,a_2,a_3)^T和(a_1^′,a_2^′,a_3^′)^T。由于a本身没有改变,因此:

如果将上式3×3的矩阵写作R,则有a=Ra^′,它描述了同一个向量坐标的变换关系,也就是旋转变换,因此称R为旋转矩阵(Rotation Matrix)。

如果考虑平移,则a=Ra^′可以更新表示为a=Ra^′+t。因此两个坐标系直接的刚体运动可以由R和t进行描述。但是由于该变换不是一个线性变换,因此引入齐次坐标,对变换进行改写:

将原始的三维向量末尾增加1个维度,取值为1,该四维向量被称为齐次坐标(Homogeneous Coordinates),而矩阵[■8(R&t@0^T&1)]写作T,被称为变换矩阵(Transform Matrix),这种类型的矩阵又被称为特殊欧式群:

R为3×3的矩阵,t为3×1的列向量,0^T为1×3的行向量。同时T的逆表示进行反向的变换:

什么是轴角

旋转矩阵有9个量,但是一次旋转只有3个自由度并且旋转矩阵自身存在正交约束和行列式值约束从而导致旋转矩阵表示旋转存在冗余变量,Rodrigues最早提出使用一个三维向量来表示三维旋转变换,其方向与旋转轴一致,向量的模长等于旋转角度。我们称这种向量为旋转向量。如果是用四个元素进行描述,即三个元素描述旋转,另外一个描述旋转角,则称这种形式的描述为轴角(Axis Angle),轴角共有三个量且无约束,因此具有三个自由度。表示为:

式中n与旋转轴方向一致的单位向量,θ为角度。从轴角变换到旋转矩阵可以使用罗德里格斯公式进行转换

什么是欧拉角

旋转矩阵和轴角并不是最直观的表示形式,而欧拉角(Euler Angle)作为描述刚体在三维欧式空间的取向提供了一种非常直观的表示方式。从物体的最初始状态(一般会选择和世界坐标系重合作为最初状态)绕着自身坐标系的xyz三个轴进行旋转三个角度,来表示物体的朝向。

什么是四元数

任意一个在三维空间中的朝向都可以被表示为一个绕某个特定轴的旋转。给定旋转轴及旋转角度,很容易把其它形式的旋转表示转化为四元数或者从四元数转化为其它形式。四元数是一种扩展的复数,它具有紧凑性和非奇异性,它有3个虚部,1个实部,通常表示形式为:

式中q_0,q_1,q_2,q_3均为实数,i,j,k为四元数的三个虚单位,它们之间有如下关系:

其他空间变换

相关推荐
junziruruo1 分钟前
t-SNE可视化降维技术(以FMTrack频率感知与多专家融合文章中的内容为例)
人工智能·算法
藦卡机器人11 分钟前
自动焊接机器人的核心技术要求与标准
人工智能·算法·机器人
2501_9403152628 分钟前
【无标题】1.17给定一个数将其转换为任意一个进制数(用栈的方法)
开发语言·c++·算法
栈与堆30 分钟前
LeetCode 21 - 合并两个有序链表
java·数据结构·python·算法·leetcode·链表·rust
鹿角片ljp1 小时前
力扣7.整数反转-从基础到边界条件
算法·leetcode·职场和发展
java修仙传1 小时前
力扣hot100:前K个高频元素
算法·leetcode·职场和发展
嗷嗷哦润橘_1 小时前
从萝卜纸巾猫到桌游:“蒸蚌大开门”的设计平衡之旅
人工智能·算法·游戏·概率论·桌游
TracyCoder1232 小时前
Java String:从内存模型到不可变设计
java·算法·string
我是大咖2 小时前
二维数组与数组指针
java·数据结构·算法
筵陌2 小时前
算法:动态规划
算法·动态规划