如何找到点(在下图中为0.3,-0.17)与原点(0,0)之间的角度(顺时针旋转,范围为0到360度)?以下是我需要的大致示意图:
左边的圆仅用于显示我希望角度旋转的方向,以及它们的起始/结束位置。右边的图示给出了我将提供给代码的输入示例(即
如何在C++或JavaScript中找到上述描述的两点之间的角度?
0.3,-0.17
)。绿线表示结果角度。如何在C++或JavaScript中找到上述描述的两点之间的角度?
0.3,-0.17
)。绿线表示结果角度。atan2
函数根据点的 x 和 y 坐标给出该点相对于 X 轴的角度。结果通常在 -180 到 180 度之间,但我们可以稍后将其调整为 [0, 360]。
您可以通过减去它们的 atan 结果来找到从原点延伸的两条线 A 和 B 之间的角度:
angle = atan2(a.y, a.x) - atan2(b.y, b.x);
这里,你的A点将是(0,1),而B点将是(0.3,-0.17)。
atan2
通常返回弧度而不是角度(请检查您所使用的编程语言文档以确保)。如果是这种情况,您应该在此处将其转换为角度。
angle = angle * 360 / (2*pi);
angle
现在将会在 -360 到 360 度之间,因此您需要执行额外的检查以使其处于所需范围内。
if (angle < 0){
angle = angle + 360;
}
angle_in_degrees=atan2(x,y)*180/pi
如果您不想使用[-180°..180°]的范围,请添加任何更正内容。
(请注意, atan2
参数通常为(y,x)顺序,但此处我们正在交换它们。)