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

问题描述

我有一个坐标系,其中北的角度值为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°为南

可以从arccos函数的弧度输出转换180 / pi因子。

,

那个角度系统很奇怪。看来您的“角度”是用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]