将 N,S,E,W 角度系统映射到 360° 角度系统

Map N,S,E,W Angle system System to 360° Angle System

我有一个坐标系,其中北的角度值为 1。东 +0.707,西 -0.707。南的角度为 0。 在这个角度系统中计算角度增量非常烦人。有什么好的方法可以将其转换为标准的 0 到 360 度坐标系? Python 首选解决方案,但我对操作更感兴趣,而不是准备使用实现。

0.707是45°的余弦。所以你当前的系统显示你的角度的余弦除以 2,正如我期望的 West 的 90° 值。如果应用变换 180/pi * arccos(x) * 2,其中 x 是您的当前值,您将获得 0° 到 360° 的值,其中 0° 或 360° 为北,180° 为南.

180/pi 系数可从 arccos 函数的弧度输出转换而来。

那个角度系统很奇怪。您的“角度”似乎计算为 sin(radians(d/2)),其中 d 是以度为单位的实际角度(南为 0°,东为 90°)。你可以反转这个:

>>> from math import *
>>> ewns = [0.707, -0.707, 1.0, 0.0]
>>> [degrees(asin(x) * 2) for x in ewns]
[89.98269667432403, -89.98269667432403, 180.0, 0.0]

可选 round 并添加 % 360 以获得 0..360 而不是 -180..180:

>>> [round(degrees(asin(x) * 2)) % 360 for x in ewns]
[90, 270, 180, 0]