2014-04-26 2 views
0

Что я хочу сделать, это нарисовать незаполненный полукруг и нарисовать указатель на нем, когда я касаюсь его (на самом деле, я коснулся его). У меня есть знания, чтобы сделать почти все из них, но мне нужна функция, которая принимает центр и радиус полукруга и координату x точки, в которую я касаюсь, и возвращает y-координату, так что точка (x, y) - точка, принадлежащая окружности.Генерация окружности по центру, радиусу и координате x

Я уже пробовал это, но это приводит к неловким результатам.

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; 
    } 

Извините за мой плохой английский и спасибо

+0

Как вы можете быть уверены, что находитесь в круге, а не над или под ним, если вы только записываете значение x? –

ответ

0

В декартовых координатах окружность с центром в точке (x0, y0) радиуса определяется по формуле:

(х - х0)^2 + (у - у0)^2 = R^2

Итак, если вы знаете, х, у вас есть два возможных значения у:

у = у0 +/- SQRT (г^2 - (х - х0)^2)

Но это предполагает, что точка, которую вы нажали, достаточно близко к кругу. Поэтому вам следует сравнить выбранный y с y на круге.

Смежные вопросы