如果我有一个720 x 720像素的图片,看起来像这样:
那么,如果给定触摸点的坐标x和y,且假设中心点的坐标为360, 360,则如何计算触摸点的角度呢?我看到很多计算都假设原点是(0, 0)(即左上角),导致我的结果不正确。我假设0始终位于顶部而没有旋转。
这是通用公式:
angle = atan2(mouseY - cirleCenterY, mouseX - circleCenterX);
可能这样更清晰明了:
(Math.toDegrees( Math.atan2(fromLeft - 360.0, 360.0 - fromTop) ) + 360.0) % 360.0
增加一个360度的旋转并应用模运算可以得到正角度,而 atan2 函数不能实现这一点。
atan2
的定义是(反直觉地)为 atan2(y, x)
,但你传递的是 (x, y)
... - BillfromLeft
和fromTop
的原因。关于测试:是的,我认为你现在会同意,左侧720,顶部360的点在90度处;左侧360,顶部720的点在180度处。 - minopretjava.lang.Math.atan2(y-360,x-360);
屏幕坐标不遵循三角函数的规则。
使用 java.lang.Math.atan2(-(y-360),x-360);