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

如何仅通过Euler Angles获取Forward、Right和Up向量?不使用quaternions或Matrices

仅用欧拉角计算Forward/Right/Up向量的可行方案

完全可以做到,欧拉角本身就是对三维空间旋转的一种描述,本质是绕三个轴的依次旋转变换,我们可以直接通过三角函数运算推导三个方向向量,不需要借助四元数或矩阵。

前提:明确欧拉角旋转顺序

首先要确定你使用的欧拉角旋转顺序(不同顺序的计算逻辑差异很大),下面以最常用的**Y-X-Z顺序(偏航Yaw→俯仰Pitch→翻滚Roll)**为例推导,对应角度定义:

  • yaw:绕世界Y轴旋转的角度(γ)
  • pitch:绕本地X轴旋转的角度(β)
  • roll:绕本地Z轴旋转的角度(α)

向量计算实现

先预计算三角函数值减少重复运算,以下是Python示例代码:

import math

# 输入欧拉角(单位:度)
yaw = 30
pitch = 15
roll = 0

# 角度转弧度
yaw_rad = math.radians(yaw)
pitch_rad = math.radians(pitch)
roll_rad = math.radians(roll)

# 预计算三角函数值
cy = math.cos(yaw_rad)
sy = math.sin(yaw_rad)
cp = math.cos(pitch_rad)
sp = math.sin(pitch_rad)
cr = math.cos(roll_rad)
sr = math.sin(roll_rad)

# 计算Forward(前向)向量
forward_x = cy * sp * cr + sy * sr
forward_y = sp * sr - cy * cr
forward_z = cy * cp
forward = (forward_x, forward_y, forward_z)

# 计算Right(右向)向量
right_x = cy * cp * sr - sy * cr
right_y = -cy * cr - sy * cp * sr
right_z = sy * sp
right = (right_x, right_y, right_z)

# 计算Up(上向)向量
up_x = -sy * cp
up_y = cy * cp
up_z = sp
up = (up_x, up_y, up_z)

关键注意点

  • 若你使用的是其他旋转顺序(比如Z-Y-X、X-Y-Z),需要重新推导三角函数组合公式,核心逻辑是依次应用每个轴的旋转三角函数变换
  • 所有三角函数计算需基于弧度,务必做好角度与弧度的转换
  • 万向锁(Gimbal Lock)是欧拉角的固有缺陷,和是否使用四元数/矩阵无关,只要用欧拉角就可能遇到该问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:03:15