C ++角度,三角学

时间:2013-05-20 16:17:58

标签: c++ trigonometry angle

我需要帮助计算点数角度: enter image description here

我需要计算从点(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 

1 个答案:

答案 0 :(得分:4)

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

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

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

double angleFromX = atan2(deltaY, deltaX);
double angle = M_PI - angleFromX;
double angleInDegrees = 180 * angle / M_PI;