空间变换其参数化

目录

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

什么是轴角

什么是欧拉角

什么是四元数

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


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

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

其他空间变换

相关推荐
毕竟是shy哥1 小时前
计算YOLO数据集中每个类的目标数
算法·yolo·机器学习
M78佐菲1 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
晊晌_h3 小时前
嵌入式从0到精通——数据结构总结[特殊字符]
数据结构·算法·排序算法
我找到地球的支点啦3 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信
罗西的思考4 小时前
【OpenClaw具身硬件】ZeroClaw 源码阅读笔记(3)--- RAG
人工智能·算法·机器学习
浪里镖客4 小时前
位姿转换矩阵写法-个人习惯(计算机理解其实是相反的)
线性代数·算法·矩阵
小白羊丨7 小时前
如何诊断 Prompt 模板导致的效果下降?
人工智能·算法·prompt
OPEN-F9 小时前
C++11/14新特性精讲:移动语义与智能指针实战
开发语言·c++·算法
lisin-lee-cooper9 小时前
【leetcode658】有序数组找出k个最接近x的数
java·数据结构·算法
sunburn-9 小时前
Java堆(Heap)详解与实战教学
java·开发语言·数据结构·ide·算法