我有一个(x, y)
带有[-1, 1]x
的元组。y
元组代表任何方向的运动。我想将其转换为 360 度角,其中 0 代表北。
问问题
7591 次
4 回答
15
根据“北”的含义,即沿哪个轴以及角度应该朝哪个方向,以下代码应该可以解决您的问题:
math.atan2(y,x)/math.pi*180
这为您提供了点(x,y)与原点的角度,逆时针方向与沿 x 轴的“北”。
于 2012-08-20T13:38:34.620 回答
7
我不会给你一个解决方案,但我会为你指出正确的方向。大多数编程语言都有一个名为 的函数atan2
,它以 x 和 y 值作为输入,并计算点与正 x 轴之间的弧度角。它会自动处理象限问题。
于 2012-08-20T13:36:20.887 回答
3
数学如下。
tan = 对面/相邻。(在您的情况下分别为 y 和 x )。
arctan(r) = 角度,给定对边与相邻的比率 r。
arctan2 与 arctan 类似,但处理象限问题。
我应该补充一点,这都是针对直角三角形的。
Atan2 的严格定义,取自维基百科:
您可以在此处找到更多信息: http ://en.wikipedia.org/wiki/Arctan2
于 2012-08-20T13:45:04.960 回答
0
这通常也可以对形成段的任何两个点进行:
segment = ((x1, y1), (x2, y2))
from math import *
angle = degrees(atan((x2 - x1) / (y2 - y1)))
只记得检查象限问题
于 2012-08-20T13:36:49.473 回答