我一直在处理 3D 空间(X、Y、Z)中的点,并且希望能够计算其中两个点之间的俯仰角和偏航角。
我当前的代码:
pitch = (float) (1/Math.tan((Y1 - Y2) / (Z1 - Z2)));
yaw = (float) (1/Math.tan((X1 - X2) / (Z1 - Z2)));
其中 X1、X2、Y1、Y2、Z1、Z2 直到运行时都是未知的,此时它们是从两个随机生成的点中收集的。
但由于某种原因,我的结果大错特错,我尝试了许多不同的组合并用谷歌搜索了无数的东西,但一无所获。
一些限制是:
- 音高只能低于或等于 90,或高于或等于 -90(90 => 音高 => -90)
- 从来没有卷所以不适用
- 在程序中声明之前,所有坐标都是未知的
- 俯仰沿 Z 轴开始,即向前/向后,向上俯仰为正
- Y 向上,Z 向前/向后,X 向侧面
- 偏航开始正对着 Z 轴
这是我第一次使用 3D 角度,并且我读过可以分别计算俯仰和偏航,就像在我的示例中一样,在两个不同的 2D 平面上,但这不起作用。
非常感谢任何帮助。