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


 

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

63377. Методология исследования и методы экономического познания. Необходимость рационального экономического познания. Обыденное и научное экономическое мышление 94.5 KB
  Методология исследования и методы экономического познания. Необходимость рационального экономического познания. Методология исследования и методы экономического познания. Необходимость рационального экономического познания.
63379. Информатика в школе 107 KB
  Цели и задачи школьного курса информатики. Базовый повышенный курсы информатики: содержание структура методические особенности. История становления школьной информатики.
63380. Системный принцип при управлении процессами разработки и эксплуатации нефтяных месторождений 240 KB
  Если рассматривается эксплуатация группы взаимовлияющих скважин то судить об эффективности того или иного мероприятия способа варианта необходимо по суммарному эффекту по всей группе который может оказаться даже отрицательным несмотря...
63381. Цветные сканеры 82.5 KB
  В настоящее время существует несколько технологий для получения цветных сканируемых изображений. Один из наиболее общих принципов работы цветного сканера заключается в следующем. Сканируемое изображение освещается уже не белым цветом...
63382. Старажытныя цывілізацыі. Этнагенез беларускага народа 64 KB
  Пры правядзенні археалагічных даследванняў легка заўважыць, як рэшткі жыццядзейнасці чалавека розняцца ў залежнасці ад тэрыторыі і часу. Больш таго, рэчавы матырыял, знойдзены археолагамі стварае на кожнай тэрыторыі свой аб’яднаны культурны комплекс з аднолькавымі і ўзаемасвязанымі...
63383. Организм и условия его обитания. Экологические факторы и их классификация. Лимитирующие факторы 197 KB
  Живые организмы используют энергию окружающей их среды для поддержания и усиления своей высокой упорядоченности. Живые организмы активно реагируют на состояние окружающей среды и происходящие в ней изменения.
63385. ОРГАНИЗАЦИОННО-ТЕХНИЧЕСКИЕ ПРОБЛЕМЫ СОЗДАНИЯ БД 431 KB
  Информационные системы созданные на основе БД характеризуется следующими особенностями: большое количество функций процессов атрибутов данных и сложные взаимосвязи между ними; наличие подсистем имеющих свои задачи и цели функционирования...