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

如何在3D空间中沿指定方向移动点?(基于俯仰、偏航、滚转角,光线步进算法)

3D空间中基于俯仰/偏航角的点方向移动实现(光线步进场景)

你已经掌握了2D空间中点沿角度方向移动的实现:

pointX += sin(angle) * movementSpeed;
pointY += cos(angle) * movementSpeed;

在3D场景中(尤其是你正在做的光线步进算法),滚转角(roll)其实不需要参与方向计算——因为光线的传播方向只由俯仰角(pitch,绕X轴上下转动)和偏航角(yaw,绕Y轴左右转动)决定,滚转角是绕光线自身轴线的旋转,不会改变光线的前进方向。

具体实现步骤如下:

  1. 先将角度值转换为弧度(如果你的输入是角度制的话)
  2. 通过三角函数计算出3D方向向量的三个分量
  3. 用方向向量乘以移动速度,加到点的坐标上

对应的代码示例:

// 角度转弧度(如果输入是角度)
float yawRad = yaw * M_PI / 180.0f;
float pitchRad = pitch * M_PI / 180.0f;

// 计算3D方向向量
float dirX = cos(pitchRad) * sin(yawRad);
float dirY = sin(pitchRad);
float dirZ = cos(pitchRad) * cos(yawRad);

// 沿方向移动点
pointX += dirX * movementSpeed;
pointY += dirY * movementSpeed;
pointZ += dirZ * movementSpeed;

简单推导逻辑:

  • 偏航角(yaw)决定了XY平面内的方向,对应2D中的sin(angle)和cos(angle)
  • 俯仰角(pitch)用来调整Y轴(上下)方向的分量,而XY平面的分量需要乘以cos(pitch)做缩放,保证方向向量的模长始终为1(如果需要单位向量的话)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:11:00