空间变换其参数化

目录

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

什么是轴角

什么是欧拉角

什么是四元数

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


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

两个坐标系之间的运动是由一个旋转和一个平移所组成,我们称这种运动为刚体运动。由于刚体运动保持了向量的长度和夹角,相当于我们把一个刚体原封不动地进行移动或旋转,不改变它自身的形状,因此它是一种欧式变换。假设单位正交基(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为四元数的三个虚单位,它们之间有如下关系:

其他空间变换

相关推荐
巫师不要去魔法部乱说17 分钟前
PyCharm专项训练4 最小生成树算法
算法·pycharm
IT猿手32 分钟前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解GLSMOP1-GLSMOP9及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·算法·机器学习·matlab·强化学习
阿七想学习37 分钟前
数据结构《排序》
java·数据结构·学习·算法·排序算法
王老师青少年编程44 分钟前
gesp(二级)(12)洛谷:B3955:[GESP202403 二级] 小杨的日字矩阵
c++·算法·矩阵·gesp·csp·信奥赛
Kenneth風车1 小时前
【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版 (1)111
算法·机器学习·分类
eternal__day1 小时前
数据结构(哈希表(中)纯概念版)
java·数据结构·算法·哈希算法·推荐算法
APP 肖提莫2 小时前
MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
java·前端·算法
OTWOL2 小时前
两道数组有关的OJ练习题
c语言·开发语言·数据结构·c++·算法
qq_433554542 小时前
C++ 面向对象编程:递增重载
开发语言·c++·算法
带多刺的玫瑰3 小时前
Leecode刷题C语言之切蛋糕的最小总开销①
java·数据结构·算法