1

我需要一些帮助来计算点的角度: 在此处输入图像描述

我需要计算从点(0,0)到从图像中提取的点的角度。1 是 0*,2 是大约 40-44* 等等。

我的问题是 atan2 显示不正确的值。atan2 的当前输出为:

 1:41.867535 2:64.653824 3:52.915009 4:30.375608 5:13.328092 

如何从点 0,0 计算它?我不能使用任何非标准库。

我仍然在做错事。我正在努力:

   arrow1 = (M_PI - atan2(y, x) * (180 / M_PI);

输出:

   1: 131.867538  2: 154.653824  3: 142.915009  4: 120.375610  5: 103.328094 

和:

   arrow1 = (M_PI - atan2(y, -x) * (180 / M_PI); 

输出:

    1: 48.132465  2: 25.346176  3: 37.084991  4: 59.624393  5: 76.671906 
4

1 回答 1

4

从返回的角度atan2(deltaY, deltaX)将是从 X 轴逆时针方向的角度,以弧度为单位。

您当前正在使用 arrow1 = atan2(x,y) *180 / M_PI;,因此您需要将其转换为 using (y,x),然后还进行切换,以便从 -X 顺时针而不是从 +X 获取 CCW 角度。

这意味着点 1 的角度,如果您将其输入为atan2(-1, 0),将是 180 度。为了达到你想要的角度,它应该是:

double angleFromX = atan2(deltaY, deltaX);
double angle = M_PI - angleFromX;
double angleInDegrees = 180 * angle / M_PI;
于 2013-05-20T16:24:58.227 回答