68909

Преобразование на плоскости

Лекция

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

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

Русский

2014-09-27

85 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

                                

Растяжение или сжатие зависит от значений a и 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 зависит от трёх параметров c,d и .

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

Матрица преобразования после этого становится матрицей размера 2*3

a  b  

c  d    ,

где и вызывает смещение x* и y* относительно x и y.

Поскольку матрица 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.

Прямая OM* пересекает плоскость H=1 в точке M*(x*,y*,1), которая однозначно определяет точку M(x, y) координатной плоскости 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

 

Двухмерное вращение вокруг произвольной точки.

Выше было рассмотрено вращение изображения около начало координат.

Однородные координаты обеспечивают поворот изображения вокруг точек, отличных от начала координат.

В общем случае алгоритм вращения вокруг произвольной точки следующий:

     –перенос центра вращения в начало координат;

     –поворот относительно начала координат;

     –перенос точки вращения в исходное положение.

Пример: построить матрицу преобразования при повороте на угол   вокруг точки 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;

Пример: построить матрицу преобразования при растяжении вдоль координатных осей с коэффициентами a и 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


 

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

57487. Кількість, густота, природний рух населення України 99 KB
  Після цього уроку учні зможуть: ознайомитись з кількістю населення України і її зміною в часі; давати визначення поняттям природний приріст міграція розкривати вплив природних історичних умов на розміщення населення на території України...
57489. Ukraine and Great Britain 1.86 MB
  Today we have unusual lesson. It’s a Presentation Lesson and its topic is “Differences and Similarities of Ukraine and Great Britain”. The aim of our lesson is to improve our knowledge, to learn more and broaden our outlook, to watch presentations, to play games.
57490. Welcome to Ukraine! 169.5 KB
  Today we have an unusual lesson. We are going to prepare for journey around Ukraine. We’ll travel next time. We’ll go by bus. But first of all we need tickets. You shouldn’t pay money for these tickets. You should answer some my questions to get a ticket. Let’s start.
57491. Послевоенное восстановление и развитие Украины (1945 - начало 1953 года). Голод 1946-1947 гг 65.5 KB
  Давайте мы пополним этот коллаж нарисовав свой символ голодоморов. Приложение №1 Документ №1 29 августа 1946 года былю официально объявлено что в связи с засухой в ряде областей СССР и сокращением государственных...
57492. ОПЫТНО-ЭКСПЕРИМЕНТАЛЬНАЯ РАБОТА ПО ФОРМИРОВАНИЮ НАВЫКОВ ПОСТРОЕНИЯ КОМПОЗИЦИИ В РИСУНКЕ У МЛАДШИХ ШКОЛЬНИКОВ СРЕДСТВАМИ ИЗОБРАЗИТЕЛЬНОГО ИСКУССТВА 166.82 KB
  Изобразительное искусство является художественным отражением действительности в зрительно воспринимаемых образах. Средствами цвета, пластики или рисунка художник создает на холсте, в глине или мраморе картины окружающей жизни, сильные и прекрасные образы человека.
57493. Точність і доречність мовлення. Складні випадки слововживання. Пароніми і омоніми. Вибір синонімів 375.5 KB
  Що таке лексикологія Що вона вивчає З яких груп складається лексика Які слова називають іншомовними Що таке термін термінологія Що таке професіоналізм Наведіть приклади. Випишіть словатерміни поясніть значення.
57494. Die Welt ist so schön! 42 KB
  Wir machen Mundgymnastik und wiederholen die Zungenbrecher: Hans hackt heute Holz hinter Hoffmanns Haus. Kleine Kinder können keine Kirschkerne knacken. Schneiders Schere schneiden scharf, scharf schneiden Schneiders Schere.
57495. Коли ви вмирали, вам дзвони не грали 150.5 KB
  Мета: поглибити конкретизувати узагальнити знання про діяльність УПА дати оцінку діяльності УПА; розвивати вміння збирати і аналізувати інформацію з різних джерел систематизувати знання готувати аргументовану відповідь вести дискусію з даної проблеми...