我已经在一个三维空间中使用点(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°≥ pitch ≥ -90°)
- 永远没有翻滚,因此不适用
- 在程序中声明之前,所有坐标都是未知的
- 俯仰角始于Z轴,即前后方向,其中向上的俯仰为正
- Y为上方,Z为前后方向,X为侧面
- 偏航角始于直接朝向Z轴
这是我第一次处理3D角度,我已经读到俯仰和偏航可以分别计算,就像我的示例中,在两个不同的2D平面上进行计算,但这样并不起作用。
任何帮助都将不胜感激。