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


 

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

77991. Основные принципы ООП. Инкапсуляция. Понятие класса, объекта. Поля, методы, свойство объектов 48 KB
  Понятие класса объекта. Объект – это экземпляр какого-либо класса. Вы объявляете что новый класс TNewObject TNewObject clssTOldObject; является потомком или дочерним классом старого класса TOldObject называемого предком или родительским классом и добавляете к нему новые поля методы и свойства иными словами то что нужно при переходе от общего к частному. Унаследованные от класса-предка поля и методы доступны в дочернем классе; если имеет место совпадение имен методов то говорят что они перекрываются.
77993. Принципы построения БД. Создание таблиц БД 121.5 KB
  Без баз данных сегодня невозможно представить работу большинства финансовых, промышленных, торговых и прочих организации. Базы данных позволяют информацию структурировать, хранить и извлекать оптимальным для пользователя образом, под базой данных (БД) понимают хранилище структурированных данных.
77994. Процедуры. Формальные и фактические параметры 35.5 KB
  Задачу вызова процедуры обработки при возникновении соответствующего событие берет на себя Delphi. Различают два вида подпрограмм: процедуры и функции. Отличие функции от процедуры заключается в том что с именем функции связано значение поэтому имя Функции можно использовать выражениях. Структура процедуры Процедура начинается заголовком за которыми следуют: раздел объявления констант; раздел объявления типов; раздел объявления переменных; раздел инструкций.
77995. Создание вычисляемых полей и полей выбора 52.5 KB
  Сделать двойной щелчок на компоненте Tble1 вызвать редактор полей; В редакторе полей правой кнопкой мыши в всплывающем меню выбрать раздел dd ll fields CtrlF добавление всех полей базы данных или dd Field Ctrl добавление определенных полей базы данных; В редакторе полей правой кнопкой мыши в всплывающем меню выбрать раздел New добавление нового поля; В разделе Fields Properties свойство поля указать имя поля тип данных компоненту и размер...
77996. Функционально-речевой аспект антропонимов в немецком языке 170.08 KB
  Цель настоящей работы состоит в рассмотрении лингвистических особенностей антропонимов, встречающихся в немецком тексте, и выявлении их функциональной значимости. Поставленная цель предполагает решение следующих задач: определить состав ономастического пространства немецкого газетного дискурса и художественного текста...
77997. Автоматизоване робоче місце диспетчера автогосподарства при УМВС України м. Чернівці 2.15 MB
  Метою розробки є створення програмного продукту автоматизації робочого місця диспетчера гаража в автогосподарстві. Розроблений проект реалізує функції процесу обслуговування диспетчера в автогосподарстві. Програмний засіб забезпечує швидку та ефективну роботу працівників автогосподарства.
77999. Исследование направлений совершенствования системы налогового администрирования земельного налога 137.82 KB
  Несмотря на сравнительно невысокую долю земельного налога в общем объеме доходных поступлений он выступает в качестве важного источника формирования местных бюджетов. Обострившаяся ситуация требует глубокого изучения земельного налога его становления изменения определения...