Перемещение прямоугольника относительно другого поворота прямоугольника - PullRequest
0 голосов
/ 27 июня 2018

У меня есть два прямоугольника: красный и зеленый. Для каждого из них у меня есть следующая информация:

  • Центральная точка (x и y координаты).
  • Угол поворота
  • Ширина и высота

Прямоугольники всегда будут двигаться в положительных координатах. Редактировать: Ни одна координата не может быть отрицательной: прямоугольники всегда расположены в положительных координатах. Следовательно, центр никогда не будет (0,0).

Задача

У меня есть стартовая позиция. Для упрощения примера скажем, что мои красный и зеленый прямоугольники расположены следующим образом:

enter image description here

Теперь я поворачиваю красный прямоугольник на угол phi, который лежит между 0º и 90º. Тем не менее, зеленые прямоугольники должны вращаться и сохранять свою позицию относительно красного прямоугольника. Зеленый прямоугольник не только вращается , но и движется .

Позвольте увидеть изображение (прошу прощения за качество эскиза):

enter image description here

Мой вопрос:

Как я могу получить новые координаты центра для зеленого прямоугольника?

1 Ответ

0 голосов
/ 27 июня 2018

Вращение около некоторой точки (rx, ry).

Редактировать: Как говорится в комментарии, центр вращения (rx, ry) - это красный центр. Формула остается прежней.

Если зеленый центр был в (gx, gy), то после вращения он имеет координаты

 gx' = rx + (gx - rx) * Cos(Phi) - (gy - ry) * Sin(Phi)
 gy' = ry + (gx - rx) * Sin(Phi) + (gy - ry) * Cos(Phi)
...