我需要帮助计算点数角度:
我需要计算从点(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
答案 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;