You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Drake库QuaternionToHopfCoordinate公式推导及输入假设的咨询

Drake中QuaternionToHopfCoordinate的推导与输入假设

背景与正向转换回顾

Hopf纤维化是将3维球面(单位四元数集合$S3$)映射到2维球面($S2$)的纤维丛结构,每个纤维是1维球面($S^1$)。Drake用$(\theta, \phi, \psi)$三个参数表示Hopf坐标:

  • $(\theta, \phi)$对应基空间$S^2$的球坐标
  • $\psi$对应纤维方向$S^1$的角度

已知的正向转换(HopfCoordinateToQuaternion)公式为:

w = cos(ψ/2) * cos(θ/2)
x = cos(ψ/2) * sin(θ/2) * cos(φ)
y = cos(ψ/2) * sin(θ/2) * sin(φ)
z = sin(ψ/2) * cos(θ/2)

注意:不同文献的参数定义顺序可能略有差异,Drake的实现对应上述形式。

逆向转换(QuaternionToHopfCoordinate)的推导

从单位四元数$q=(w,x,y,z)$反解Hopf坐标的过程如下:

  1. 求解θ:
    对正向公式的平方项求和:
    $w^2 + z^2 = \cos2(\psi/2)\cos2(\theta/2) + \sin2(\psi/2)\cos2(\theta/2) = \cos^2(\theta/2)$
    $x^2 + y^2 = \cos2(\psi/2)\sin2(\theta/2)$
    两式开方后相除得$\tan(\theta/2) = \sqrt{x^2 + y^2} / \sqrt{w^2 + z^2}$,因此:
    $\theta = 2\arctan\left( \frac{\sqrt{x^2 + y2}}{\sqrt{w2 + z^2}} \right)$

  2. 求解φ:
    由x和y的表达式可知$\tan(\phi) = y/x$,为了正确处理所有象限,使用反正切函数的双参数形式:
    $\phi = \arctan2(y, x)$

  3. 求解ψ:
    观察w和z的表达式,两式相除得$\tan(\psi/2) = z/w$,同样用双参数反正切处理象限:
    $\psi = 2\arctan2(z, w)$

Drake中的QuaternionToHopfCoordinate实现完全基于上述推导逻辑。

输入假设

  • 单位四元数:输入必须是单位长度的四元数(满足$w^2 + x^2 + y^2 + z^2 = 1$),否则推导中的平方和关系不成立,转换结果会出现偏差。
  • 奇异点处理:当$x=y=0$时,$\theta=0$,此时φ的取值不影响正向转换结果,Drake会将φ设为固定值;当$w=z=0$时,$\theta=\pi$,同样φ无意义,实现会做特殊处理避免计算错误。

q与-q的等价性问题解释

单位四元数中,$q$和$-q$表示同一个旋转,这是四元数的固有性质。在Hopf坐标转换中:

  • 若$q=(w,x,y,z)$对应的Hopf坐标是$(\theta, \phi, \psi)$,则$-q=(-w,-x,-y,-z)$对应的Hopf坐标为$(\theta, \phi, \psi+\pi)$
  • 因此执行QuaternionToHopfCoordinate(HopfCoordinateToQuaternion(q))时,得到的四元数可能是$q$或$-q$——这是因为Hopf纤维化的每个纤维对应两个四元数,逆向转换返回的是纤维中的一个代表元,而非原输入的精确值。
  • 你观察到HopfCoordinateToQuaternion(-q)返回$-q$,正是因为$-q$对应的Hopf坐标仅ψ增加π,正向转换后会准确还原为$-q$。

内容的提问来源于stack exchange,提问作者odunkl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:05:29