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

不同坐标系下相机射线俯仰角计算及Reflected_Ray分量角度求解

计算Reflected_Ray向量在XZ平面分量的角度

原理说明

要计算目标角度,核心是提取向量的X、Z分量(忽略Y分量),再计算该投影分量与X轴正方向的夹角:

  • 从Reflected_Ray向量中提取x和z分量,构造XZ平面上的投影向量(x, 0, z)
  • 使用atan2(z, x)计算弧度值(参数顺序对应垂直轴、水平轴,适配右手坐标系规则),再通过弧度转角度得到最终结果
  • 若需要0°~360°的常规角度范围,可对负角度做加360°的修正

可复现代码与可视化

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 模拟plant坐标系下的Reflected_Ray向量(终点位于world的XY平面,示例值可替换为实际转换结果)
Reflected_Ray = np.array([1.5, 2.0, -1.0])

# 提取XZ平面分量
xz_component = np.array([Reflected_Ray[0], 0, Reflected_Ray[2]])

# 计算角度(与X轴正方向的夹角)
angle_rad = np.arctan2(xz_component[2], xz_component[0])
angle_deg = np.rad2deg(angle_rad)

# 转换为0~360°范围
if angle_deg < 0:
    angle_deg += 360

print(f"XZ平面分量与X轴正方向的角度:{angle_deg:.2f}°")

# 3D可视化
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

# 绘制plant坐标系轴
ax.quiver(0,0,0, 3,0,0, color='r', label='Plant X轴')
ax.quiver(0,0,0, 0,3,0, color='g', label='Plant Y轴')
ax.quiver(0,0,0, 0,0,3, color='b', label='Plant Z轴')

# 绘制原向量与XZ分量
ax.quiver(0,0,0, Reflected_Ray[0], Reflected_Ray[1], Reflected_Ray[2], color='m', linewidth=2, label='Reflected_Ray')
ax.quiver(0,0,0, xz_component[0], xz_component[1], xz_component[2], color='c', linewidth=2, linestyle='--', label='XZ平面分量')

# 标注图像点对应的3D终点
ax.scatter(Reflected_Ray[0], Reflected_Ray[1], Reflected_Ray[2], color='k', s=50, label='图像点对应3D点')

# 设置可视化参数
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Reflected_Ray向量及其XZ分量可视化')
ax.legend()
ax.set_box_aspect([1,1,1])
plt.show()

代码说明

  • 模拟的Reflected_Ray向量可直接替换为实际从图像点转换得到的向量值
  • atan2(z, x)的计算逻辑确保角度符合坐标系方向规则,结果修正为0~360°更便于工程应用
  • 可视化部分直观展示了原向量、XZ平面投影分量以及对应的3D终点位置,便于验证计算结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:27:14