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

如何从Y/Z轴的旋转向量中获取旋转角度?

计算绕指定轴旋转后的向量对应的旋转角度

核心原理

当一个单位向量绕某固定轴旋转时,旋转角度可通过初始向量与目标向量的点积结合叉乘判断方向计算,前提是:

  • 初始向量 $\vec{v}_0$ 和目标向量 $\vec{v}$ 均为单位向量
  • 旋转轴是这两个向量所在平面的法向量(即旋转轴与两向量都垂直)

具体步骤

  1. 求角度绝对值
    两个单位向量的点积等于它们夹角的余弦值:
    $$\cos\theta = \vec{v}0 \cdot \vec{v} = v{0x}v_x + v_{0y}v_y + v_{0z}v_z$$
    通过反余弦函数得到弧度值:
    $$\theta = \arccos(\vec{v}0 \cdot \vec{v})$$
    若需角度值,再转换:$\theta
    {deg} = \theta \times \frac{180}{\pi}$

  2. 判断旋转方向(正负)
    计算初始向量与目标向量的叉乘 $\vec{v}_0 \times \vec{v}$,将结果与旋转轴对比:

  • 叉乘结果与旋转轴同向,角度为正(右手定则逆时针旋转)
  • 叉乘结果与旋转轴反向,角度为负(顺时针旋转)

针对你的示例计算

示例1:目标向量 (1.0, 0, 0),绕Y轴旋转

假设初始基准向量为Z轴初始方向 (0, 0, 1):

  • 点积:$01.0 + 00 + 1*0 = 0$
  • $\theta = \arccos(0) = \frac{\pi}{2}$ 弧度(90°)
  • 叉乘:$\vec{v}_0 \times \vec{v} = (0,1,0)$,与Y轴旋转轴 (0,1,0) 同向,角度为正90°

如果初始基准向量是X轴初始方向 (1.0,0,0),点积为1,旋转角度为0°(无旋转)。

示例2:目标向量 (0, 0, -1),绕Z轴旋转

假设初始基准向量为Z轴初始方向 (0,0,1):

  • 点积:$00 + 00 + 1*(-1) = -1$
  • $\theta = \arccos(-1) = \pi$ 弧度(180°)
  • 两向量反向,旋转角度为180°

Python 实现示例

import math

def calculate_rotation_angle(v0, v, axis):
    # 计算点积,限制范围避免浮点误差
    dot_product = v0[0]*v[0] + v0[1]*v[1] + v0[2]*v[2]
    dot_product = max(min(dot_product, 1.0), -1.0)
    # 计算弧度角度
    theta_rad = math.acos(dot_product)
    
    # 计算叉乘
    cross_x = v0[1]*v[2] - v0[2]*v[1]
    cross_y = v0[2]*v[0] - v0[0]*v[2]
    cross_z = v0[0]*v[1] - v0[1]*v[0]
    
    # 判断旋转方向
    axis_dot_cross = axis[0]*cross_x + axis[1]*cross_y + axis[2]*cross_z
    if axis_dot_cross < 0:
        theta_rad = -theta_rad
    
    # 转换为角度
    theta_deg = math.degrees(theta_rad)
    return theta_rad, theta_deg

# 示例1:绕Y轴,初始向量(0,0,1),目标向量(1,0,0)
rad1, deg1 = calculate_rotation_angle((0,0,1), (1.0,0,0), (0,1,0))
print(f"示例1:旋转弧度: {rad1:.2f}, 角度: {deg1:.2f}°")

# 示例2:绕Z轴,初始向量(0,0,1),目标向量(0,0,-1)
rad2, deg2 = calculate_rotation_angle((0,0,1), (0,0,-1), (0,0,1))
print(f"示例2:旋转弧度: {rad2:.2f}, 角度: {deg2:.2f}°")

运行结果:

示例1:旋转弧度: 1.57, 角度: 90.00°
示例2:旋转弧度: 3.14, 角度: 180.00°

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:38:08