Java 从圆心求一点的角度

Java 从圆心求一点的角度,java,geometry,Java,Geometry,如果我有一张像这样的720720图像 如果中心x和y是360,360,我如何计算出接触x,y的角度 我看到的很多计算都假设原点是0,0(左上角),所以得到的结果不正确。 我假设0总是在顶部,并且没有旋转。这样可能更清楚: java.lang.Math.atan2(y-360,x-360); (Math.toDegrees( Math.atan2(fromLeft - 360.0, 360.0 - fromTop) ) + 360.0) % 360.0 添加360度旋转并应用模运算符可获得正

如果我有一张像这样的720720图像

如果中心x和y是360,360,我如何计算出接触x,y的角度 我看到的很多计算都假设原点是0,0(左上角),所以得到的结果不正确。
我假设0总是在顶部,并且没有旋转。

这样可能更清楚:

java.lang.Math.atan2(y-360,x-360);
(Math.toDegrees( Math.atan2(fromLeft - 360.0, 360.0 - fromTop) ) + 360.0) % 360.0

添加360度旋转并应用模运算符可获得正角度,而atan2则不提供正角度。

屏幕坐标与三角坐标不同


使用
java.lang.Math.atan2(-(y-360),x-360)

以下是一般公式:

angle = atan2(mouseY - cirleCenterY, mouseX - circleCenterX);

到目前为止你到底发现了什么?如果您的问题只是关于中心的坐标,我们将很乐意帮助您!传统上,0度向右,90度向上,180度向左,270度向下。(我可能误解了你的措辞。)这似乎是最接近这里所建议的任何解决方案。在我之前的评论中我误解了,如果我用x触摸坐标代替fromLeft,用y代替fromTop,我至少会得到一个正角度。在3点左右单击确实会得到预期的90度左右,但是如果我在6点单击,我会得到接近360度的结果,这是出乎意料的,9点报告正确的270度。这看起来非常接近,但在计算中12点和6点仍然存在一些问题。如果我在12点单击,我得到180,6点我得到0,因此它们以某种方式颠倒。从“fromTop-360.0”更正为“360.0-fromTop”。在JavaWIDE上测试过。你测试过这个片段吗
atan2
被定义为(反直觉地)atan2(y,x)
但是你通过了
(x,y)
…@Bill谢谢。我现在同意,有必要清楚地说明在这个问题中使用的坐标轴。在数学中,它们的方向与通常的x-y坐标不同。它们像Java2D、Postscript等一样面向对象。这就是为什么我将参数命名为左
和右
和右
的原因。关于测试:是的,我想你现在会同意,从左边720点,从上面360点,是90度;从左到360,从上到720,点处于180度。