两点之间的签名角度

时间:2016-11-01 10:23:33

标签: java android trigonometry

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

Ilustration

谷歌搜索了一段时间后,我找到了Law of cosines

所以我想出了以下代码:

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中的点1到点2将是+45但是从2到1将是-45。知道怎么做吗?

1 个答案:

答案 0 :(得分:-1)

您需要区分第一次和第二次点击。 并看看他们是如何彼此相对的。上/左,下/右等 然后根据你的参考点使用它。 角度并不关心点击的顺序。时钟/计数器检查

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