检测一个圆圈内的位置

我需要检测触摸板上的旋钮的位置。 我需要检测是否在特定区域,如果是,哪一个。 当然,这些部分是有色的部分。

触摸板

我知道黑色的中心圆在X轴和Y轴的0.8f和-0.8f处结束。

我能得到的信息是百分比X和百分比Y,从中心0到1,或者从中心0到-1。

我怎么去做这个?

这正是2个参数( Math.atan2 )的反正切函数所做的。

double angle = Math.atan2(y, x); 

此外,用于廉价testing半径的常用技巧是:

 double radius = 0.8; if (x*x + y*y > radius*radius) { // outside the grey circle } 

你应该看看极坐标 。

黑暗的中心圈是一组点

 C = { (r, phi) | 0 <= r <= 0.8, 0 <= phi < 2 pi } 

其他有色部分是集合

C_i = { (r, phi) | 0.8 <= r <= 1, phi_i <= phi < phi_(i+1) }

i in {0,..,5}phi_6 = phi_0 ,你需要测量图中的角度phi_i

对于极坐标和笛卡尔坐标之间的转换,请使用链接的维基百科文章中的公式。