我有一个元组(x,y)x和y元素[-1,1]。元组表示任何方向的运动。我想将其转换为360度角,其中0代表北方。
我特别喜欢python中的解决方案。
答案 0 :(得分:7)
我不会给你一个解决方案,但我会指出你正确的方向。大多数编程语言都有一个名为atan2
的函数,它将x和y值作为输入,并计算点与正x轴之间的弧度角。它会自动处理象限问题。
答案 1 :(得分:6)
取决于'北'的含义,即沿着哪个轴,以及角度应该朝哪个方向,以下代码应该是您问题的解决方案:
math.atan2(y,x)/math.pi*180
这将为您提供距离原点的点(x,y)的角度,沿x轴逆时针旋转“北”。
答案 2 :(得分:3)
数学如下。
tan =相反/相邻。 (在你的情况下分别是y和x)。
arctan(r)=角度,给定与相邻相反的比率r。
arctan2就像arctan,但负责象限问题。
我应该补充一点,这就是直角三角形。
Atan2的严格定义,取自维基百科:
您可以在此处找到更多信息: http://en.wikipedia.org/wiki/Arctan2
答案 3 :(得分:0)
对于形成片段的任何两个点,这也可以一般地完成:
segment = ((x1, y1), (x2, y2))
from math import *
angle = degrees(atan((x2 - x1) / (y2 - y1)))
请记住检查象限问题