Найти точку на круге на Android - PullRequest
6 голосов
/ 26 апреля 2011

Все казалось таким простым и ясным, пока мне не пришлось его программировать.

Что у меня есть

Я загрузил изображение, чтобы объяснить это лучше.

  • У меня есть круг, и я знаю

    • это радиус
    • координаты центральной точки
    • начальные координаты каждой кнопки (красные кружки).

Я хочу иметь возможность, когда я поворачиваю изображение серого круга на 10 градусов, вычислять красными кнопками новые координаты (x1y1, x2y2).

Это не должно быть трудно для кого-то, кто знает математику, но мне не удалось найти подходящее решение. Я также искал здесь и не мог найти рабочее решение. Любая помощь очень ценится. Спасибо

enter image description here

Рабочий раствор, как сказал Феличе ниже:

- сначала позаботьтесь об угле поворота, при каждом перерисовке просто увеличивайте его

   angle = angle+mainRotationAngle;

    float x =  (float) (center.X + Math.cos(angle*Math.PI / 180F) * radius 
    float y =  (float) (center.Y + Math.sin(angle*Math.PI / 180F) * radius

    button.setX(x);
    button.setY(y);

Ответы [ 2 ]

5 голосов
/ 26 апреля 2011

Проще, если вы оставите с собой начальную кнопку angles , а затем измените угол, чтобы произвести вращение.так в псевдокоде:

newAngle = Angle+rot;
xbutton = center.x+cos(newAngle)*radius;
ybutton = center.y+sin(newAngle)*radius;

Если у вас действительно есть координаты кнопок, вы можете преобразовать их в угол с помощью функции atan2, в псевдокоде:

buttonAngle = atan2(button.y-center.y,button.x-center.x);
1 голос
/ 26 апреля 2011

x1 = x + r sin 10

y1 = y + r cos 10

x2 = x - r sin 10

y2 = y - r cos 10

...