» » »

1.Двумерные алгоритмы. Преобразование координат: сдвиг, поворот.

1.Двумерные алгоритмы. Преобразование координат: сдвиг, поворот.

Преобразование и новые координаты.

Рассмотрим следующую систему уравнений

\

Эти уравнения можно интерпретировать двояким образом:

  1. Все точки на плоскости ху переместились вправо на расстояние а
  2. координатные оси х и у переместились влево на расстояние а

Этот простой пример иллюстрирует принцип, применимый и к более сложным ситуациям.  Мы  будем  рассматривать системы уравнений, обычно записываемых в виде произведения матриц, интерпретируя их как преобразование всех точек в фиксированной системе координат. Однако та же самая система может интерпретироваться и как изменение системы координат.

  Пусть необходимо повернуть точку Р(х,у) вокруг начала координат О на угол φ. Изображение новой точки обозначим P(x,y). Существуют четыре числа а,b,c,d, такие, что новые координаты х, y могут быть вычислены по значениям старых координат х и у из следующих уравнений

x'=ax+by

y'=cx+dy

 Для получения значений а,b,c,d рассмотрим вначале точки (х, у) = (1, 0). Полагая х=1 и у=0 в этой системе получим

        x’=a

        y=c.

  Но в этом простом случае,как это видно из следующего рисунка, значения x и y’ равны соответственно cos φ и sin φ. Тогда будем иметь

                а = cos φ

                с =  sin φ

Аналогичным образом из второй половинки рисунка следует

             b = - sin φ

             d  = cos φ

Тогда исходную систему можно переписать

          x’ = x cos φ – y sin φ

y

 
         y’ = x sin φ + y cos φ


 

Поворот

Эта система описывает поворот вокруг начала координат, но обычно это не то, что требуется. Если требуется выполнить поворот относительно заданной точки  00),то в этом уравнении можно заменить х на х-х0, у на у-у0, x’ на x’-x0, y’ на у‘-у0

  x' –x0=(x-x0) cos φ- (y-y0) sin φ

  y' – y0=(x-x0) sin φ + (y-y0) cos φ           (2)

 

Матричная запись

Система уравнений (2)  может быть записана в виде одного матричного уравнения

[x’ y’]= [x y] 

 или с использованием вектора столбца

=

уравнение переноса можно записать в виде

 

[xy’] =[x y 1] , но лучше записать в виде

 

[x’ y’ 1] = [x y 1] .

\

Запись каждого преобразования в форме произведения матриц позволяет совмещать несколько преобразований в одном. Чтобы показать такое совмещение  преобразований, объединим поворот с двумя переносами

  Поворот на угол φ вокруг начала координат запишем в форме

[x’ y’ 1] = [x y 1]

\

Выведем новую версию уравнения для описания поворота на угол φ вокруг точки (х0 у0). Это уравнение может быть выражено формулой

[xy’ 1] = [x y 1] R, где через R обозначена матрица 3 х 3.

Для нахождения этой матрицы R будем считать, что преобразование состоит из трех шагов с промежуточными точками (u1 v1), (u2 v2).

  1. Преобразование переноса точки (х0 у0) в начало координат О. 

Т’ = 


\
  1. Поворот на угол φ относительно начала координат О.

 [u2 v2 1]=[u1 v1 1] R0, где

R0


\
  1. Перенос из начала координат в точку (х0 у0)

 [xy’ 1] = [u2 v2 1] T, где

T = 

\

Возможность комбинации этих шагов основано на свойстве ассоциативности матричного умножения

(А В) С = А (В С) или А В С

Теперь найдем

          [x’ y’ 1] = [u2 v2  1] T =

                        = ([u1 v1  1] R0) T =

                        = [u1 v1  1] R0 T =

                        = ([x y  1] T’)R0 T =

                        = [x y  1] T’R0 T =

                        = [x y 1] R

где

             R=T’ R0 T

Это и будет искомая матрица, которая после выполнения матричного умножения даст

R =

Где введены обозначения

                           c1 = x0  - x0 cos φ + y0 siun φ

                           c2 = x0 – x0  sin φ –  y0 cos φ .

 



Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.

Поделиться

Оплаченная реклама

Дисциплины