68886

Перетворення на площині

Лекция

Информатика, кибернетика и программирование

Представлення графічних зображень здійснюється крапками і лініями. Можливість перетворення крапок і ліній є основою комп’ютерної графіки. При використанні комп’ютерної графіки можна змінювати масштаб зображення, обертати його, зміщувати і трансформувати для поліпшення наочності зображення об’єкту.

Украинкский

2014-09-26

83.5 KB

1 чел.

ЛЕКЦІЯ 6

Перетворення на площині

Представлення графічних зображень здійснюється крапками і лініями.

Можливість перетворення крапок і ліній є основою комп'ютерної графіки. При використанні комп'ютерної графіки можна змінювати масштаб зображення, обертати його, зміщувати і трансформувати для поліпшення наочності зображення об'єкту.

Аффінне перетворення на площині.

У комп'ютерній графіці все, що відноситься до двомірного випадку, позначається символом 2d (2-dimension).

Користуватимемося декартовою системою координат - це зручний спосіб скріплення геометричного об'єкту (т.м) - з числами X, Y - її координатами, які дозволяють кількісно описувати геометричні фігури.

y                                                           y             y*        x*

         M (x, y)         

                    M* (x*, y*)                                     M (x, y)

                         x                                                              x

                                                                                               

У декартовій системі координат перетворення можна розглядати двояко:

         -змінюється положення крапки, а система координат та ж;

         -зберігається крапка, а змінюється координатна система.

Надалі розглядатимемо перший випадок: у заданій системі прямокутних координат перетвориться точка площини.

 Перетворені координати описуються співвідношеннями:

          X* = ax + by + ;

          Y* = cx + dy + ;    загальне аффінне перетворення,

      де a, b, c, d, , довільні числа.

Для переміщення крапки на площині необхідно описати закон зміни її координат.

Існує декілька окремих випадків перетворень, використовуючи які досягається необхідні переміщення на площині. Такими перетвореннями є:

       -паралельне перенесення;

       -обертання;

        -зеркальне відображення;

        - розтягування або стискування.

Вибір цих випадків визначається двома обставинами:

  -кожне з приведених перетворень має простий і наочний геометричний сенс;

  -будь-яке перетворення на площині можна представити як послідовне виконання (суперпозицію) простих перетворень: паралельне перенесення, обертання, розтягування і віддзеркалення.

1) Паралельне перенесення.

       Y                                                     y  

                                M*                                              M*

                                                                   M   

               

                      M                                                         O*  

                                   X                        O                            X

Переводить крапку С з координатами X і Y в точку М* з координатами X* і Y*.

     X* = x + ;

     Y* = y + ;

Приклад: переміщення прямої на площині

2). Дзеркальне віддзеркалення.

     y                                                                 y

                    M                              M*               M

                          x                                                              x

                    M*

       x* = +x;                                               x* = –x;

       y = –y;                                                 y* = y;

  щодо осі абсцис           щодо осі ординат

3) Розтягування (стискування)

     y                                                        y                             

                    M                                                     M*              x* = a * x;

                                                                                                  y* = d * y;

             M*                                                  M

                                 x                                                        x

                                

Розтягування або стискування залежить від значень а і d.

                M

                      M*

                                 x

      O

Якщо a>1 і d<1, то прямокутник розтягується по Х і стискується

  по Y.

Якщо a>1 і d>1, то прямокутник розтягується по X і Y.

Для ефективного використання цих відомих формул в комп'ютерній графіці  зручніше користуватися матричним записом:

      -значення координат точки М можна розглядати як                                                                               

елементи матриці [x, y] - вектор-рядок або        x   – вектор-стовпець.

                                                                               y

      -так розтягування:

       a   0      x        x*                x* = a * x;

       0   d      y   =   y*                y* = d * y;

              віддзеркалення:

    x      1   0                               x* = x;

    y      0  -1     вісь абсцис      y* = –y;

    x      -1  0                               x* = –x;

    y       0  1      вісь ординат     y* = y;

4) Обертання                                                         

Перед отриманням матриці обертання розглянемо перетворення одиничного квадрата .

 y

                                            0   0    – т. А

 D            C                       1    0    – т. В

                                            1   1    – т. С

                                            0   1    – т. D

 A            B             x

Застосування загального матричного перетворення  до одиничного квадрата приводить до наступного результату:

a   b    

c  d

0  0                     0      0                A*

1  0    a  b           a       b                B*

1  1    c  d    =   a+c  b+d              C*

         0  1                     c       d                D*

Результати:

-початок координат не піддається перетворенню; A=a*=[0 0]

-координата В* визначається першим рядком загальної матриці перетворення;

-координата D* визначається другим рядком загальною матрицею перетворення.

Таким чином, якщо координати точка В* і точка D* відомі, то загальна матриця перетворення визначена.

Розглянемо обертання одиничного квадрата навколо початку координат. Обертання проти годинникової стрілки береться за позитивне.

               y

                                                 BB* ;                 x* = 1 * cos

                    C*                                                      y* = 1 * sin

                                                   D – D* ;               x* = -1 * sin

D*                                     C                                    y* = 1 *  cos

                                   B*

                          

                          

               A  A*              B               x

Загальну матрицю обертання можна записати:

              

   x  y     cos   sin                           x* = x * cos – y * sin;

             -sin  cos                            y* = x * sin + y * cos;

Таким чином, отримали:

обертання(rotation)

x         cos    -sin                          x* = x * cos – y * sin;                 

        y         sin       cos                        y* = x * sin + y * cos;

- розтягування (dilatation)

          x      a  0                          x* =a*x; 

          y      0  d                          y*= d*y;

віддзеркалення(reflection)

          x      1   0                        x* =x;              по осі абсцис

          y      0  -1                        y* = -y;

перенесення(translation);            x* = x +  

                                                    y* = y +

Кожне з приведених перетворень координат можна так само описати формулами:

    x* = ax + by + ;

    y* = cx + dy + ;  – загальні аффінні перетворення;

–при a=d=1 и b=c=0 – отримуємо перенесення;

–при a=d=cos и –b=c=sin, ==0 – обертання;

–при a=1, d=–1, c=b==віддзеркалення;

–при b=c==розтягування (стискування);

У матричному описі основних перетворень відсутня операція паралельного перенесення, тобто за допомогою матриці описані:

        x* = ax + by;

        y* = cx + dy; – відсутні.

 і  , а зміна координати по X залежить від трьох параметрів                     

a,b, і по Y залежить від трьох параметрів с, d і .

Значить, щоб охопити матричним підходом чотири прості перетворення, необхідно перейти до опису довільної крапки не парою чисел (x,y), а трійкою чисел [x,y,1] і [x*,y*,1]

Матриця перетворення після цього стає матрицею розміру 2*3

a  b  

c  d    ,

де  і  викликає зсув x* і y* відносно x і у.

Оскільки матриця 2*3 не є квадратною, то вона не має зворотної матриці.

Тому її доповнюють до квадратної, розміру 3*3.

         a  b  

         c  d      – третя компонента векторів положення крапок не                 

0  0  1               змінює.

              

     Використовуючи цю матрицю

          x        a  b          x*

          y        c  d     =  y*

          1        0  0  1       1

отримуємо перетворений вектор [x*, y*, 1].

У загальному випадку [X, Y, H].

Перетворення було виконане так, що

           [X, Y, H] = [x*, y*, 1]

Перетворення, що має місце в тривимірному просторі, в нашому випадку обмежено площиною H=1.

Пряма OМ* перетинає площину H=1 в точці M*(x*,y*,1), яка однозначно визначає точку M(x, у) координатної площини XY.

Представлення двомірного вектора тривимірним або в загальному випадку n-вимірного вектора (n+1) -вимірним називають однорідним координатним відтворенням.

У однорідних координатах запис буде у вигляді:

                                 a  c  0

[x, y, H]=[x, y, 1] *   b  d  0

                                               1   ,

де x = x*, y = y*, H = 1.

У загальному випадку H не дорівнює 1 і перетворені звичайні координати виходять за рахунок нормалізації однорідних координат, тобто

                 X* = x/H;  Y* = y/H.

Основна матриця перетворення розміру для однорідних двомірних координат має вигляд:

a  b  

c  d  

m  n  s

І може бути розділена на чотири частини

a, b, c, d – здійснює зміну масштабу, зрушення і обертання;

 і виконує зсув;

m і nотримання проекції;

sпроводить повну зміну масштабу.

Оскільки при H, яке не дорівнює, ми отримуємо зображення в тривимірному просторі, то для простоти обчислень в 2d використовуваний H=1 і матрицю узагальнену на чотири перетворення:

x*      x        a  b                   x* = ax + by + ;

y*  =  y   *    c  d                  y* = cx + dy + ;

1        1        0  0  1                         1 = 1.

Для того, щоб реалізувати те або інше переміщення по заданих геометричних характеристиках, треба знайти елементи відповідної матриці, використовується матриці:

-обертання (rotation):

       cos  -sin  0                               cos   sin    0

       sin   cos  0        зворотна       -sin  cos   0

        0        0      1                                   0       0       1

розтягування (dilatation):

    a  0  0                                 1/a  0    0                x* = ax;

    0  d  0           зворотна        0  1/d  0                y* = dy;

    0  0  1                                   0   0   1

 

віддзеркалення (reflection):

     1  0  0                         1   0  0                           x* = x;

     0 –1 0      зворотна    0 –1  0                          y* = -y;

     0  0  1                          0  0  1

перенесення (translation):

     1  0                           1  0  -                          x* = x + ;

     0  1       зворотна     0  1 -                          y* = y + .

     0  0  1                          0  0  1

 

Двомірне обертання навколо довільної крапки.

Вище було розглянуто обертання зображення біля початок координат.

Однорідні координати забезпечують поворот зображення навколо крапок, відмінних від початку координат.

У загальному випадку алгоритм обертання навколо довільної крапки наступний:

     -перенос центру обертання в початок координат;

     -поворот відносно початку координат;

     -перенос точки обертання в початкове положення.

Приклад: побудувати матрицю перетворення при повороті на кут  j навколо точки M(m,n), не співпадаючої з початком координат.

           Y

                        

                       M

                                         x

1) Перенесемо площину на вектор M(-m, -n) для поєднання точки повороту з початком координат:

                   1  0  -m

         T_=    0  1  -n

                   0  0   1

2) Поворот на кут :

            cos  -sin  0

     R=  sin   cos  0

              0        0      1

3).Перенесем площину на вектор M(m, n) для обертання точки повороту в початок координат:

             1  0  m

      T=   0  1  n

             0  0  1

Результуюча матриця:

                            1  0  m         cos  -sin  0

M=T * R * T_=    0  1  n     *   sin    cos 0    =  

                            0  0  1            0         0     1

         

      cos  -sin  m         1  0  -m         cos  -sin   -mcos + nsin + m

 =   sin    cos  n     *    0  1  -n   =    sin    cos  -msin – ncos + n    

        0         0      1          0  0   1            0         0                    1                    

    x*       x

    y*   =  y   *  M

    1         1        

                   T * R –T_

 X* = xcos – ysin – mcos + nsin + m;

 Y* = xsin + ycos – msin – ncos + n;

Приклад: побудувати матрицю перетворення при розтягуванні уздовж координатних осей з коефіцієнтами а і d.

                     1  0  -m

 1).    T_ =    0  1  -n    

                     0  0  1       

 

                     a  0  0

 2).    D =      0  d  0

                     0  0  1      

                   1  0  m

 3).    T =    0  1  n

                   0  0  1        

                1  0  m         -a  0  0          1  0  -m

      M=     0  1  n    *     0  d  0     *    0  1  -n    ;

                0  0  1           0  0  1          0  0  1          

                   a   0   -am + m

          M=   0   d   -dn + n

                   0   0         1


 

А также другие работы, которые могут Вас заинтересовать

1119. Проблема температурной стабилизации транзисторов 348 KB
  Энергетическая диаграмма n полупроводника. Температурный дрейф выходной характеристики. Эмиттерная стабилизация режима. Коллекторная стабилизация режима. Характеристика терморезистора и его графическое обозначение. Термостабилизация режима терморезистором. Динамический режим работы транзисторов.
1120. Принципы использование тиристоров 108 KB
  Принцип действия тиристора. Полупроводниковые источники света. Светоизлучающие диоды. Механические колебания диодов кристаллической решетки. Характеристики СИД. Полупроводниковый лазер. Система зеркал – оптический резистор.
1121. Понятие микросхем. Основные сведение микроэлектроники 244.5 KB
  Микросхема в корпусе ДИП. Полупроводниковые интегральные микросхемы. Структура интегрального биполярного транзистора. Интегральные полевые транзисторы. Интегральные конденсаторы.
1122. Архитектура вычислительных систем 2.32 MB
  Ознакомление с принципом действия, машинными циклами и тактами микропроцессора КР580: изучение правил записи машинных программ(в машинных кодах и мнемокодах), исследование выполнения команд пересылки байта.
1123. Стальной каркас одноэтажного производственного здания 756 KB
  Расстояние от головки кранового рельса до низа несущих конструкций покрытия. Горизонтальные размеры поперечной рамы. Постоянная нагрузка от веса продольной стены и остекления. Постоянные нагрузки от подкрановой конструкции. Величина продольного усилия от постоянной нагрузки в отдельных сечениях колонны. Расчет на вертикальную нагрузку от мостовых кранов.
1124. Залізничний вагонний рухомий склад 311.5 KB
  Основні види та технічні параметри залізничного вагонного рухомого складу. Технічна характеристика платформи моделі 13-2114. Перевезення важковагових, довгомірних, громіздких вантажів.
1125. Основы лабораторных исследований по информатике 1.04 MB
  Составление, ввод, трансляция и выполнение программ линейной и разветвляющейся структуры. Составление, ввод, отладка и выполнение программ, использующих одномерные массивы. Программирование алгоритмов сортировки и поиска.
1126. Корреляционный и регрессионный анализ 955 KB
  Корреляционный анализ. Множественный коэффициент корреляции. Классификатор на основе ядерных оценок. Регрессионный анализ. Коэффициент ошибок (на обучающей выборке). Применение QDA.
1127. Термическая обработка углеродистой стали на мелкое зерно 110.5 KB
  Изучить влияние отжига и нормализации на величину зерна в стали. Освоить методику определения величины аустенитного зерна по ГОСТ 5639-82. Роль термической обработки в процессах формирования зерна в сталях.