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

如何通过笛卡尔坐标系两次连续旋转参数化归一化3D向量并分解为旋转分量?

归一化3D向量的旋转分解与双轴旋转参数化

一、将归一化3D向量分解为旋转分量

给定归一化3D向量 $\boldsymbol{v} = (v_x, v_y, v_z)$(满足 $v_x^2 + v_y^2 + v_z^2 = 1$),它可看作基准单位向量(通常选 $\boldsymbol{e}_z = (0,0,1)$)经旋转后的结果。分解旋转分量的核心是找到将 $\boldsymbol{e}_z$ 映射到 $\boldsymbol{v}$ 的旋转参数,常用三种方式:

1. 轴角表示

  • 旋转轴 $\boldsymbol{k}$:取 $\boldsymbol{e}_z$ 与 $\boldsymbol{v}$ 的叉乘方向,即 $\boldsymbol{k} = \frac{\boldsymbol{e}_z \times \boldsymbol{v}}{||\boldsymbol{e}_z \times \boldsymbol{v}||}$(当 $\boldsymbol{v} = \boldsymbol{e}_z$ 时轴可任意选取)
  • 旋转角 $\alpha$:满足 $\cos\alpha = \boldsymbol{e}_z \cdot \boldsymbol{v} = v_z$,$\sin\alpha = ||\boldsymbol{e}_z \times \boldsymbol{v}|| = \sqrt{v_x^2 + v_y^2}$

2. 欧拉角表示(Z-Y-X顺序)

  • 偏航角 $\psi$:绕Z轴旋转的角度,由 $\boldsymbol{v}$ 在XY平面的投影与X轴的夹角决定,公式为 $\tan\psi = \frac{v_y}{v_x}$
  • 俯仰角 $\theta$:绕Y轴旋转的角度,满足 $\cos\theta = v_z$,$\sin\theta = \sqrt{v_x^2 + v_y^2}$
  • 滚转角 $\phi$:此时为0(从 $\boldsymbol{e}_z$ 转到 $\boldsymbol{v}$ 无需滚转操作)

3. 四元数表示

对应单位四元数为 $q = \left( \cos\frac{\alpha}{2}, \boldsymbol{k} \sin\frac{\alpha}{2} \right)$,代入轴角表示中的 $\alpha$ 和 $\boldsymbol{k}$ 即可得到具体分量。

二、用两次笛卡尔轴旋转参数化归一化3D向量

通过先绕Z轴旋转、再绕Y轴旋转的固定顺序,可将基准向量 $\boldsymbol{e}_z$ 转换为任意归一化3D向量 $\boldsymbol{v}$,具体步骤如下:

  1. 定义旋转角度

    • 偏航角 $\psi$:将 $\boldsymbol{e}_z$ 在XY平面的投影(初始为(1,0,0))转到与 $\boldsymbol{v}$ 的XY投影 $(v_x, v_y)$ 同向的角度,计算公式:
      ψ = atan2(v_y, v_x)
      
    • 俯仰角 $\theta$:将绕Z轴旋转后的向量(此时为 $(v_x, v_y, 0)$ 方向的单位向量)旋转到与 $\boldsymbol{v}$ 同向的角度,计算公式:
      θ = arccos(v_z)
      
  2. 旋转矩阵验证
    绕Z轴转 $\psi$ 的旋转矩阵:

    R_Z(ψ) = [
        [cosψ, -sinψ, 0],
        [sinψ, cosψ, 0],
        [0, 0, 1]
    ]
    

    绕Y轴转 $\theta$ 的旋转矩阵:

    R_Y(θ) = [
        [cosθ, 0, sinθ],
        [0, 1, 0],
        [-sinθ, 0, cosθ]
    ]
    

    两次旋转后的结果为 $R_Y(\theta) \cdot R_Z(\psi) \cdot \boldsymbol{e}_z = \boldsymbol{v}$,代入角度公式可直接验证等式成立。

  3. 特殊情况处理

    • 当 $\boldsymbol{v} = \boldsymbol{e}_z$ 或 $\boldsymbol{v} = -\boldsymbol{e}_z$ 时,$\psi$ 可取任意值(XY投影为零,偏航角不影响结果)
    • 计算 $\psi$ 时用 atan2(v_y, v_x) 而非普通 arctan,可避免象限判断错误

内容的提问来源于stack exchange,提问作者a.smiet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:37:28