Java 两点间有符号角

Java 两点间有符号角,java,android,trigonometry,Java,Android,Trigonometry,我有两个点(触摸位置),我想知道它们之间相对于图像中心的角度 在谷歌搜索了一段时间后,我发现 所以我想出了以下代码: final float x = e.getX() - v.getWidth() / 2; final float y = e.getY() - v.getHeight() / 2; final float a = PointF.length(x, y); final float b = PointF.length(x_, y_); final double c = Math.

我有两个点(触摸位置),我想知道它们之间相对于图像中心的角度

在谷歌搜索了一段时间后,我发现

所以我想出了以下代码:

final float x = e.getX() - v.getWidth() / 2;
final float y = e.getY() - v.getHeight() / 2;

final float a = PointF.length(x, y);
final float b = PointF.length(x_, y_);
final double c = Math.sqrt(Math.pow(x - x_, 2) + Math.pow(y - y_, 2));

final double alpha = Math.toDegrees(Math.acos((Math.pow(a , 2) + Math.pow(b, 2) - Math.pow(c, 2)) / (2 * a * b)));

它似乎起作用了。但它有一个大问题。角度总是正的。但我需要能够识别顺时针和逆时针的运动。所以从图中的点1到点2是+45,但从2到1是-45。你知道怎么做吗?

你需要区分第一次和第二次点击。 看看它们是如何相互关联的。上/左、下/右等 然后根据你的参考点使用它。 角度与单击的顺序无关。时钟/计数器检查注意

基本上,如果你在中心点之上,你需要检查哪个点在另一个点的左边。 如果你在中间,你需要检查哪个在右边。 这完全取决于你如何定义顺时针方向