通过中心,半径和x坐标生成的圆点

时间:2014-04-26 18:32:39

标签: java android math geometry

我想要做的是绘制一个未填充的半圆,并在我触摸它时绘制一个指针(在我触摸它的那一点上)。我知道要做几乎所有这些,但我需要的是一个函数,它取半个圆的中心和半径以及我正在触摸的点的x坐标并返回一个y坐标,这样point(x,y)是属于圆的点。

我已经尝试过了,但这会导致尴尬的结果。

    private int f(int centerX, int centerY, int radius, int touchedX){ 
            int y = -1;
            if (touchedX>=centerX-radius && touchedX<=centerX+radius)
               y = (int) (centerY+Math.sin((double) (touchedX-centerX)*radius);
            return y;
   }

抱歉我的英文不好,谢谢你

1 个答案:

答案 0 :(得分:0)

在笛卡尔坐标系中,以半径r的(x0,y0)为中心的圆由下式定义:

(x-x0)^ 2 +(y-y0)^ 2 = r ^ 2

所以,如果你知道x,你有两个可能的y值:

y = y0 +/- sqrt(r ^ 2 - (x - x0)^ 2)

但这假设您点击的点足够接近圆圈。因此,您应该将所选y与圆上的y进行比较。