2016-02-16 2 views
0

Мне нужно использовать проприетарный графический движок для рисования линии. Я могу вращать весь рисунок по его начальной точке (P1). То, что я хочу, - повернуть его вокруг своей центральной точки (M). Таким образом, в основном это выглядит как L_correct вместо L_wrong.Повернуть линию вокруг центра

Думаю, его можно исправить, переместив его с P1 на P2. Но я не могу понять, какую формулу можно использовать, чтобы определить расстояние. Вероятно, это связано с углом, шириной и высотой ...

Итак, в основном, мой вопрос заключается в том, есть ли функция для определения x2 и y2 на основе имеющихся данных?

1

ответ

0

Давайте предположим, что у вас есть примитивный метод, который вращает рисунок любым заданным углом phi. Вы хотите использовать этот примитив для поворота чертежа D вокруг точки M. Ниже приведен пример того, как действовать.

  1. Перевести вы рисование -M, т.е. применить преобразование T(P) = P - M ко всем точкам P на чертеже. Пусть T(D) будет перевод D.

  2. Теперь используйте примитив, чтобы повернуть T(D) на нужный угол phi. Пусть результат R(T(D)).

  3. Теперь переведите предыдущий результат на M и получите повернутый рисунок. Другими словами, используйте преобразование T'(P) = P + M.

Обратите внимание, что на стадии 1 выше M отображается в начало координат 0, где вращение примитивным, как известно, работает. После поворота на шаге 2 противоположный перевод этапа 3 возвращает чертеж в исходное местоположение, так как на этот раз 0 отображается на M.