在圆圈周围触摸一个点

时间:2013-03-14 23:13:04

标签: android trigonometry

这里有趣的触发问题......

我在Android屏幕中间有一个圆圈。我需要根据用户触摸屏幕的X,Y坐标从正Y轴获得角度。

我所有的高中几何学现在都让我失望了。任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果触摸点x1,y1和

xc = display.getWidth()/2;

yc = display.getHeight()/2;

x1, y1 in top left.  x2, yc in center.  angle b and angle a

然后atan2(y1 - yc,x1 - xc)将以弧度给出并回答与图中角度“a”相对应的弧度。

您所指的“正y轴”对应于90度或π/ 2弧度的角度。如果您真正想要的是“与正y轴成一个角度”,那么您需要从角度中减去pi / 2并使用以下公式获取绝对值(以获得y轴与您之间角度的原始差异):

angleInRadiansAwayFromYAxis = Math.abs(Math.atan2(y1 - yc, x1 - xc) - Math.PI/2);

如果你想要角度b和a之间的绝对角度差(因此,假设水平y轴是0角)你只需要减去角度:

angleInRadiansFromYAxis = Math.atan2(y1 - yc, x1 - xc) - Math.PI/2;

如果负数打扰你,你可以随时在Math.PI * 2处获得任何负面结果,以获得介于0和pi * 2之间的正数。