**已关闭。**此问题不符合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 ?
2条答案
按热度按时间hsvhsicv1#
atan2
函数给出了一个点相对于X轴的Angular ,给定了该点的x和y坐标。结果通常在-180和180度之间,但我们可以稍后将其调整为[0,360]。通过减去从原点延伸的两条直线A和B的atan结果,可以找到这两条直线之间的Angular :
这里,A点是(0,1),B点是(0.3,-0.17)。
atan2
通常以弧度而不是度的形式返回Angular (请检查您的语言的文档以确定)。如果是这种情况,您应该在这里将其转换为度。angle
现在将介于-360和360度之间,因此您需要执行额外的检查以使其处于所需的范围内。mspsb9vt2#
如果你将图像沿对角线翻转,即交换x和y坐标,Angular 的分布是三角学中常见的分布。
如果您不需要[-180 ° ..180 °],还可以加上范围的任何校正。
(Note
atan2
参数通常是按(y,x)的顺序排列的,但这里我们交换了它们。