Поворот изображения и отслеживание местоположения - PullRequest
1 голос
/ 07 сентября 2010

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

Дано:

  1. Начало координат в 0,0
  2. Ширина и высота изображения 100, 100
  3. Точка вращения при C (50,50)
  4. Угол "a" (скажем, 90 градусов в этом примере)
  5. Точка P начинается с (25,25), а после вращения - с Pnew (75,25)

alt text

Я не трогал триг в течение 20 летно угадать формулу просто ...

1 Ответ

2 голосов
/ 07 сентября 2010

Я не трогал тригона в течение 20 лет, но думаю, что формула проста ...

Да, честно.Чтобы отобразить точку (x1, y1) с помощью вращения вокруг начала координат:

x2 = cos(a) * x1 + sin(a) * y1;
y2 = cos(a) * y1 - sin(a) * x1;

... так что вам просто нужно сначала перевести на начало координат, т.е. (-50, -50) в вашем примере, и перевестиназад после вращения.

x2 = cos(a) * (x1 - 50) + sin(a) * (y1 - 50) + 50;
y2 = cos(a) * (y1 - 50) - sin(a) * (x1 - 50) + 50;

... Или что-то в этом роде.(Вы можете создать матрицу, которая будет выполнять все три преобразования, я оставлю это для другого ответа или в качестве упражнения ...)

...