javascript 两点之间的Angular ,0-360,CW?[闭合]

628mspwn  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(90)

**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。

这个问题似乎不是关于在help center定义的范围内编程。
22小时前关门了。
Improve this question
如何找到0,1和另一个点(在下图中,0.3,-0.17)之间的Angular (0到360度,顺时针旋转),原点在0,0?下面是我需要的一个粗略的说明:

左边的圆圈纯粹是为了显示我希望Angular 旋转的方向,以及它们从哪里开始/结束。右边的图给出了我将提供给代码的输入示例(即0.3,-0.17)。绿色线是结果Angular 。
在C++或JavaScript中,如何找到两点之间的Angular ?

hsvhsicv

hsvhsicv1#

atan2函数给出了一个点相对于X轴的Angular ,给定了该点的x和y坐标。结果通常在-180和180度之间,但我们可以稍后将其调整为[0,360]。
通过减去从原点延伸的两条直线A和B的atan结果,可以找到这两条直线之间的Angular :

angle = atan2(a.y, a.x) - atan2(b.y, b.x);

这里,A点是(0,1),B点是(0.3,-0.17)。
atan2通常以弧度而不是度的形式返回Angular (请检查您的语言的文档以确定)。如果是这种情况,您应该在这里将其转换为度。

angle = angle * 360 / (2*pi);

angle现在将介于-360和360度之间,因此您需要执行额外的检查以使其处于所需的范围内。

if (angle < 0){
    angle = angle + 360;
}
mspsb9vt

mspsb9vt2#

如果你将图像沿对角线翻转,即交换x和y坐标,Angular 的分布是三角学中常见的分布。

angle_in_degrees=atan2(x,y)*180/pi

如果您不需要[-180 ° ..180 °],还可以加上范围的任何校正。
(Note atan2参数通常是按(y,x)的顺序排列的,但这里我们交换了它们。

相关问题