我有一个元组 (x, y)
与 x
和 y
在[-1, 1]中。这个元组代表任何方向的运动,我想把它转换成360度角,其中0代表北。我想将其转换为360度角,其中0代表北。
根据 "North "的含义,即沿着哪个轴线,以及角度应该去的方向,下面的代码应该是你问题的一个解决方案。
math.atan2(y,x)/math.pi*180
这段代码给出了一个点(x,y)从原点出发的角度 沿着x轴逆时针方向与 "North "的角度。
我不会给你一个解决方案,但我会给你指出正确的方向。 大多数编程语言都有一个叫做 atan2
它将 x 和 y 的值作为输入,并计算该点与正 x 轴之间的弧度角。 它能自动处理象限问题。
数学原理如下。
tan = oppositeadjacent. (在你的例子中分别为y和x)。
arctan(r) = 角度,给定的对角到相邻的比率r。
arctan2 与arctan类似,但考虑了象限问题。
我需要补充的是,这都是针对直角三角形的。
Atan2的严格定义,取自维基百科。:
你可以在这里找到更多信息。http:/en.wikipedia.orgwikiArctan2。
这也可以通用于任何两个点组成的线段。
segment = ((x1, y1), (x2, y2))
from math import *
angle = degrees(atan((x2 - x1) / (y2 - y1)))
只要记得检查象限问题