• 四元数Quaternion的基本运算


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁) 知识定位 人群定位
    🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    技术背景

    在前面一篇文章中我们介绍了欧拉角死锁问题的一些产生背景,还有基于四元数的求解方案。四元数这个概念虽然重要,但是很少会在通识教育课程中涉及到,更多的是一些图形学或者是工程学当中才会进行讲解。本文主要是面向四元数,相比上一篇文章更加详细的介绍和总结一下四元数的一些运算法则,还有基于四元数的插值法。

    基本运算

    说到四元数,很多人可能会觉得有点陌生,但是如果说复数,很多人就都有学习过。我们一般用z=x+iyz=x+iyz=x+iy这样的形式去定义一个复数(Complex Number),其中xxx是实部,而yyy是虚部,iii是虚数单位,并且有i2=−1i2=−1i^2=-1这样的特性。并且对于一个虚数而言,如果取自然指数(运算规则为:eiθ=cosθ+i sinθeiθ=cosθ+i sinθe{i\theta}=cos\theta+i sin\theta),还能够得到一个很美的数学公式:eiπ=−1eiπ=−1e{i\pi}=-1,这就是非常著名的欧拉公式。

    而四元数Quaternion这个概念的提出,更像是对复数的一个扩展,我们通常把四元数写成这样的形式:

    q=s+ix+jy+kzq=s+ix+jy+kzq=s+ix+jy+kz
    其中s,x,y,zs,x,y,zs,x,y,z都是实数,并满足这样的一些运算规则:

    i2=j2=k2=ijk=−1i×j=k,j×k=i,k×i=jj×i=−k,k×j=−i,i×k=−ji2=j2=k2=ijk=−1i×j=k,j×k=i,k×i=jj×i=−k,k×j=−i,i×k=−ji2=j2=k^2=ijk=-1\
    i\times j=k,j\times k=i,k\times i=j\
    j\times i=-k,k\times j=-i,i\times k=-j
    以上都是四元数的一些基本定义,接下来我们逐一看一下四元数的一些基本运算。

    四元数加法

    两个四元数的加法就是将“实部虚部”对应位置做元素求和:

    q1+q2=(s1+ix1+jy1+kz1)+(s2+ix2+jy2+kz2)=(s1+s2)+i(x1+x2)+j(y1+y2)+k(z1+z2)q1+q2=(s1+ix1+jy1+kz1)+(s2+ix2+jy2+kz2)=(s1+s2)+i(x1+x2)+j(y1+y2)+k(z1+z2)q_1+q_2=(s_1+ix_1+jy_1+kz_1)+(s_2+ix_2+jy_2+kz_2)=(s_1+s_2)+i(x_1+x_2)+j(y_1+y_2)+k(z_1+z_2)
    可以简单证明,四元数的加法满足交换律、结合律和分配律,这里不过多展开介绍。

    四元数缩放

    在系数缩放这一点上,四元数与复数是一致的:

    λq=λs+iλx+jλy+kλzλq=λs+iλx+jλy+kλz\lambda q=\lambda s+i\lambda x+j\lambda y+k\lambda z
    逐一对四元数中的各项元素进行缩放即可。

    四元数乘法

    四元数的乘法是所有元素之前都要运算一遍:

    q1q2=(s1+ix1+jy1+kz1)∗(s2+ix2+jy2+kz2)=(s1s2−x1x2−y1y2−z1z2) +i(s1x2+s2x1+y1z2−y2z1) +j(s1y2+s2y1+x2z1−x1z2) +k(s1z2+s2z1+x1y2−x2y1)q1q2=(s1+ix1+jy1+kz1)∗(s2+ix2+jy2+kz2)=(s1s2−x1x2−y1y2−z1z2) +i(s1x2+s2x1+y1z2−y2z1) +j(s1y2+s2y1+x2z1−x1z2) +k(s1z2+s2z1+x1y2−x2y1)\begin{align*}
    q_1q_2&=(s_1+ix_1+jy_1+kz_1)(s_2+ix_2+jy_2+kz_2)\
    &=(s_1s_2-x_1x_2-y_1y_2-z_1z_2)\
    &\ +i(s_1x_2+s_2x_1+y_1z_2-y_2z_1)\
    &\ +j(s_1y_2+s_2y_1+x_2z_1-x_1z_2)\
    &\ +k(

  • 相关阅读:
    English语法_介词 - 表时间
    企业管理论文题目怎么写?
    [附源码]计算机毕业设计JAVA后疫情下物业管理系统
    编译和运行一个ARM64内核
    Java 基于 SpringBoot 的校园疫情防控系统
    2022年中总结关键词:裁员、年终奖、晋升、涨薪、疫情
    ubuntu18.04安装kalibr疯狂踩坑记录
    xxljob2.3.0适配oracle12c数据库具体实施
    基于java+springmvc+mybatis+vue+mysql的医院设备管理系统
    Linux使用操作(一)
  • 原文地址:https://blog.csdn.net/u012804784/article/details/126950856