空间变换其参数化

目录

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

什么是轴角

什么是欧拉角

什么是四元数

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


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

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

其他空间变换

相关推荐
Frostnova丶29 分钟前
LeetCode 190.颠倒二进制位
java·算法·leetcode
骇城迷影1 小时前
代码随想录:链表篇
数据结构·算法·链表
专注前端30年2 小时前
智能物流路径规划系统:核心算法实战详解
算法
json{shen:"jing"}2 小时前
字符串中的第一个唯一字符
算法·leetcode·职场和发展
追随者永远是胜利者3 小时前
(LeetCode-Hot100)15. 三数之和
java·算法·leetcode·职场和发展·go
BlockWay3 小时前
西甲赛程搬进平台:WEEX以竞猜开启区域合作落地
大数据·人工智能·算法·安全
im_AMBER5 小时前
Leetcode 121 翻转二叉树 | 二叉树中的最大路径和
数据结构·学习·算法·leetcode
mit6.8246 小时前
二分+贪心
算法
programhelp_6 小时前
特斯拉 MLE 超详细面经 + 避坑
数据结构·人工智能·算法·面试·职场和发展
越甲八千7 小时前
深入了解迭代器erase()之后的失效逻辑
算法