3

我有一个(x, y)带有[-1, 1]x的元组。y元组代表任何方向的运动。我想将其转换为 360 度角,其中 0 代表北。

4

4 回答 4

15

根据“北”的含义,即沿哪个轴以及角度应该朝哪个方向,以下代码应该可以解决您的问题:

 math.atan2(y,x)/math.pi*180

这为您提供了点(x,y)与原点的角度,逆时针方向与沿 x 轴的“北”。

于 2012-08-20T13:38:34.620 回答
7

我不会给你一个解决方案,但我会为你指出正确的方向。大多数编程语言都有一个名为 的函数atan2,它以 x 和 y 值作为输入,并计算点与正 x 轴之间的弧度角。它会自动处理象限问题。

http://en.wikipedia.org/wiki/Atan2

于 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 回答