首页 > 其他分享 >四元数在旋转变换和插值中的有趣的可视化解释

四元数在旋转变换和插值中的有趣的可视化解释

时间:2024-05-04 09:11:25浏览次数:33  
标签:q1 q0 插值 球面 旋转 四元 可视化 数在 旋转变换

四元数可以旋转三维空间中的向量,而最近刚好硬着头皮读《复分析可视化方法》(见[1]),这本书中,作者非常巧妙地运用球极射影的方法,将三维空间单位球面上绕向量轴旋转的变换,映射为复平面上旋转矩阵的表示,对四元数的插值给出可视化的有趣并且直观的解释。

四元数的基本定义(参考2),两个四元数相乘可以得到:

绕球面上一点p旋转θ角度,可以表示成对任意两条过p成角θ/2的两条球面直线(大圆)的反射复合。反射就是类似对球面大圆所在平面的对称点的数学概念。两个旋转可以复合成一个旋转变换,如图:
              
L与M的夹角是θ/2,相交于点r, 点P1对L反射为P2,再对M反射成P3,两次反射后P1变成P3就像绕点r旋转了θ角度。再复合一个旋转,使P3对M反射又成P2,然后对N反射成P4, 四次连续反射后P1变成P4旋转ψ角度。

经过证明(详细请参考[1]255页,6.2.4小节空间旋转也是默比乌斯变换)跳过其中的细节,球面上的旋转可以用复平面上的矩阵来表示。用矩阵相乘来研究球面上旋转变换复合的性质。

在球面上分别绕 x ,y ,z 轴旋转π, 例如当绕 x轴旋转时 l = 1, m = 0, n = 0,ψ = π

容易验证得出连续两次绕 x ,y ,z 轴旋转π,矩阵的乘积等于 -1,其中两个矩阵的积等于另一个矩阵,所以绕向量v旋转ψ的矩阵就可以拆解为下面的表达式:

到了这里突然就有了一种似曾相识的感觉,上面表达式跟单位四元数的定义式等同。球面的上的旋转复合现在可以用四元数的乘积来表示了,这一下好像打开了一扇门,因为球面上所有的运动都可以用旋转搞定,也就可以用四元数代数运算来表示了,反过来同理,单位四元数表示的4维向量,在球面上有具体的可视化解释,大脑于是开始炸裂了。接着,特里斯坦直接写出四元素旋转公式的非常直观的证明,(描述下当时读到这段的心情:经常看到用代数方法解决几何问题,作者用几何的方法证明代数公式,惊呆了! 这比[3]文中用向量运算证明四元数旋转公式的方法直观很多)
              
    简单地考察球面上的点旋转效果,假设球面上p'点是由p点绕a点角度ψ而成,想象一下在p'点时,绕a点相反方向角度-ψ就会回到原来的p点, 此时绕p点的旋转任意角度θ,再继以绕a点相正方向角度ψ,最后得到就是绕p'点旋转角度θ。

要理解上式,可能刚开始心情比较平静,感觉哪里见过(比如矩阵相似形式),慢慢有一点不习惯,在这个等式中似乎任意两个旋转(对应的矩阵)都是相似的,因为球面上任意两点p,p'都有一个点a,p绕a旋转能到达p'。其次,旋转空间中的向量,用四元数的代数运算代替了矩阵作用于向量的乘法,当 θ = π时就是通常说的四元数的向量旋转公式。

现在介绍可视化球面线性插值SLERP,在网上分享的很多的资料和参考中,对两个四元数的插值的计算方法(参考6)都是在四元数点积的基础之上(类似三维空间向量的点积运算),相对于两点之间的线性插值,四元数之间的插值显得很不直观。但使用前面描述的四元数的可视方法,这种插值方法就变得很直观明白了。SLERP公式有两种(参考3):

q0,q1是需要进行插值的两个四元数,q'是插值的中间状态的值。第一个等式也是计算机中常用的插值公式,第二个等式相对来说要计算一次四元数的乘积(并不比矩阵运算量少),但这两个等式下面可以看到其实是相同的。由于两个单位四元数之积是另一个单位四元数,q0q'的积是q1,求得q'
                
t在[0,1]之中变化,使用q'的t次幂来对q0q1插值,得益于上面等式(1)的运用,简直就是欧拉公式的翻版,又一次惊呆了,对于这一类的四元数(只有旋转角度θ改变,u保持不变)它们的性质就如复平面的单位长度的虚数一样了,在时刻t由等式(2),q'的旋转角度变成tθ,使用前面对四元数介绍,这样插值就有很直观的可视化解释了:
                 
q'q0q1之间改变,它的旋转角度在t1时刻是ψ1,在t2时刻变成ψ2,根据球面几何中的计算方法,旋转角度随时间变化的增量ψ2-ψ1,即角速度变化并不是一个常数。在计算机的图形应用中,如果一个物体绕q0旋转过渡到绕q1旋转,从微小到很难察觉的尺度看也许并不太丝滑。
                  
逆推两个插值公式相等,只需要θ=ψ满足就可以了。根据定义显然cosθ等于q0q1的点积,也等于q0的逆与q1乘积的实部cosψ,所以θ与ψ是相等的。从球面来可视化看,q0q1的夹角θ就是q0的逆与q1乘积的旋转角ψ。

总结:借助四元数在球面上的表示,通过作图可以看到两个四元数之间插值时的改变。由于有限的时间和精力,不能把其中一些结论的详细推导过程写下来。作图完全靠手画,编写数学公式不熟练,用了差不多一周的时间,通过读下面引用的参考材料,将四元数插值过程大概描述出来也许也不错吧。

参考:

[1] [美]特里斯坦.尼达姆, 复分析:可视化方法,齐民友译.北京:人民邮电出版社
[2] Understanding Quaternions 中文翻译
[3] David Eberly, Quaternion Algebra and Calculus
[4] 四元数与旋转变换
[5] 四元数的球面线性插值(slerp)
[6] 四元数插值与均值(姿态平滑)

标签:q1,q0,插值,球面,旋转,四元,可视化,数在,旋转变换
From: https://www.cnblogs.com/beng12/p/18164843

相关文章

  • 前端使用 Konva 实现可视化设计器(8)- 预览框
    请大家动动小手,给我一个免费的Star吧~大家如果发现了明显的Bug,可以提Issue哟~这一章我们实现一个预览框,实时、可交互定位的。github源码gitee源码示例地址预览框定位方法移动画布,将传入x,y作为画布中心://更新中心位置updateCenter(x=0,y=0){......
  • 数据可视化在天气方面能够为我们带来什么样的帮助?
    数据可视化在天气方面能够为我们带来极大的帮助。天气是人类生活中一个重要的因素,对于农业、交通、航空、能源等各个领域都有着重要的影响。而数据可视化技术通过将复杂的天气数据转化为直观、易懂的图表、图像或地图等形式,为我们提供了更深入、更全面的天气信息,帮助我们更好地理......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-42-强大的可视化追踪利器Trace
    1.简介在我们日常执行自动化测试工作的过程中,经常会遇到一些偶发性的bug,但是因为bug是偶发性的,我们不一定每次执行都能复现,所以我们在测试执行的时候,追踪用例执行就变得非常重要了。playwright提供了一个PlaywrightTraceViewer工具来追踪测试执行,这是一个GUI工具,我们可以通过它......
  • 智能制造新篇章:机电工厂内部场景三维可视化技术引领未来
    随着科技的飞速发展,机电工厂正迎来一场前所未有的变革,三维可视化技术的应用,不仅为工厂管理带来了革命性的改变,也为智能制造的发展注入了新的活力。 传统的机电工厂管理往往依赖于纸质图纸和人工巡查,这种方式不仅效率低下,而且容易出错。而通过高精度的三维建模和实时渲染,可以将......
  • AI助力后厨可视化智慧监管,让“舌尖安全”看得见
    一、背景与需求分析夏天是食物易腐败的季节,高温容易引发食品安全问题。在后厨环境中,食品安全问题可能涉及食品加工、后厨环境、食品是否被污染等方面,而不合格的食品安全管理可能导致食品中毒事件等风险,损害消费者的健康和餐厅的声誉。在这样的背景下,越来越多的餐厅管理者意识到......
  • 智慧之眼:碎石厂工业园区可视化引领未来
    在时代的浪潮中,工业发展日新月异,碎石厂工业园区作为建材行业的重要一环,正迎来一场前所未有的变革。在这场变革中,可视化技术的应用不仅为碎石厂工业园区带来了前所未有的发展机遇,更在推动绿色、智能、可持续发展方面发挥了举足轻重的作用。 碎石厂工业园区可视化,就是将园区的各......
  • 使用pptk对点云进行可视化渲染
    需求有一些3D点云,需要在三维空间进行可视化渲染,并做两组点云之间的对比。实现使用pptk库对点云进行渲染,可将两组点云合并传入用颜色进行区分。importnumpyasnpimportpptk#genpointsgt_points=np.random.rand(100,3)pd_points=np.random.rand(200,3)red=np.ar......
  • PYTHON 用几何布朗运动模型和蒙特卡罗MONTE CARLO随机过程模拟股票价格可视化分析耐克
    原文链接:http://tecdat.cn/?p=27099最近我们被客户要求撰写关于蒙特卡罗的研究报告,包括一些图形和统计输出。金融资产/证券已使用多种技术进行建模。该项目的主要目标是使用几何布朗运动模型和蒙特卡罗模拟来模拟股票价格。该模型基于受乘性噪声影响的随机(与确定性相反)变量该项......
  • 3D可视化技术:为医院内部展示带来革命性变革
    在数字化、信息化浪潮的推动下,各行各业都在寻求着创新与突破。而在这其中,医疗行业的变革尤为引人注目。近年来,医院内部展示可视化技术的崛起,正以其独特的魅力,引领着医疗领域步入一个全新的时代。 医院内部展示可视化,通过先进的可视化技术,将医院内部的各个环节、流程以及医疗信......
  • Echarts制作时变数据可视化+2024 QQ群聊记录制作词云图
    时变数据可视化Echarts其实就是个js文件,在开头导入一下就好了其实这部分我没有做太多时间,大部分代码都是gpt直接生成的(乐)所以这里只分享一下我觉得代码里比较有意思的部分先放效果图图中渐变效果的代码(来源CSDN某个博主)lineStyle:{shadowCo......