可视化理解四元数,愿你不再掉头发

本文通过可视化方式深入解析四元数,特别是如何用四元数表示三维旋转。从二维单位圆的投影开始,逐步讲解到三维单位球面和四维单位超球面的投影,揭示四元数乘法的几何意义。最后讨论了四元数乘法规则在三维旋转中的应用,解释了为何使用qpq'表示旋转,并提供了参考资料和相关阅读建议。
摘要由CSDN通过智能技术生成

点击“计算机视觉life”关注,置顶更快接收消息!
本文阅读时间约8分钟

四元数的可视化

四元数被广泛应用在计算机图形学领域,游戏引擎Unity也是用四元数在后端计算旋转。数学上,我们可以按部就班地进行演算,可是直觉上一直不知道它究竟如何运作的。今天我就带领大家通过观察四元数,更准确地说是观察四维单位超球面在三维的投影,来对它有个更深入的了解。

四元数的引出

四元数的一个最主要的应用就是表示旋转,它既是紧凑的,也没有奇异性。而旋转的其他表示方法各有优劣:

旋转矩阵:用九个数来表示三个自由度,矩阵中的每一列表示旋转后的单位向量方向,缺点是有冗余性,不紧凑[1]。

旋转向量:用一个旋转轴和一个旋转角来表示旋转,但是因为周期性,任何2nπ的旋转等价于没有旋转,具有奇异性[2,3]。

欧拉角:将旋转分解为三个分离的转角,常用在飞行器上,但因为万向锁问题(Gimbal Lock) 而同样具有奇异性。

万象锁问题,一三轴重合后损失一个自由度

四元数之所以难以理解,是因为它是一个四维的表示。不过也不是没有办法,因为我们通常用单位四元数来表示旋转,所以我们只需要关注四维中的单位超球面(unit hypersphere),然后就可以较为轻松地获得它在三维的球极平面投影(stereographic projection).

单位圆在一维空间的投影

为了更好地理解四维单位超球面在三维空间的投影, 我们先来看一看二维单位圆是怎么投影到一维空间的。

在复数平面内,对于每一个在单位圆上的点,画一条线将 -1 点与这个点相连。连线将与虚数轴交于一点,此交点就是投影点。从上图中可以看到,1 投影在一维 0 处,i 和 -i 投影后不发生变化, 而 -1 投影到了正负无穷远处。这里需要注意的是,此处的投影仅仅只是二维空间中单位圆的一个投影,二维空间中的其他点是没有办法用一维来表示的。

我们可以在左边的单位圆中清楚地观察到乘以 i 对应着一个90度的旋转,与之对应的,投影在一维坐标轴上的点也在进行着移动,1 变成 i,i 变成 -1,-1 变成 -i,-i 变成 1, 这与复数的乘法定义相吻合。就这样,二维空间中单位圆的纯旋转由一个维度表示清楚。

单位球面在二维空间的投影

现在想象我们如何将三维空间的纯旋转解释给二维的生物。首先我们需要构建一个新的坐标系,在这个坐标系中,i 轴和 j 轴形成一个平面,而实数轴与z轴对齐。

4.png

需要注意的是,这里的坐标系仅仅只是为了让概念可视化,i 和 j 并不像复数和四元数那样有良好的乘法定义。和之前的二维投影相似,我们可以用球极平面投影来描述三维的旋转。对于每一个单位球面上的点,我们都把它与 -1 点相连,这条线与 ij 平面的交点即是二维的投影点。

如上图所示,实数轴上的 1 会投影在平面的原点,北半球上的点会投影在 ij 平面的单位圆内,而南半球上的点会投影在单位圆之外,且任意方向的无穷远处都会是-1的投影。这里的单位圆是投影之后唯一不被扭曲的,位于单位球上的点。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值