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


 

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

21614. Создание таблиц Microsoft Excel 480 KB
  Приведены требования при вводе данных в ячейки листа при этом особое внимание уделено порядку ввода дат и времени. По умолчанию все данные ячейки вводятся одной строкой. Для этого следует выделить ячейки не обязательно смежные в которые необходимо ввести данные ввести данные и нажать клавиши клавиатуры Ctrl Enter или при нажатой клавише клавиатуры Ctrl щелкнуть по кнопке Ввод в строке формул см. Одни и те же данные можно ввести одновременно в одноименные ячейки различных листов.
21615. Установка числовых форматов MS Excel 248 KB
  Особое внимание уделено возможностям использования числовых форматов при представлении чисел дат и времени. Показано использование денежного и финансового форматов. О числовых форматах Под числами в Microsoft Excel понимаются собственно числа включая числа с десятичными и или простыми дробями и числа с указанием символа процентов а также даты и время.
21616. Вычисления с использованием функций в MS Excel 276.5 KB
  Можно задавать ссылки на ячейки других листов той же книги и на другие книги. Ссылки на ячейки других книг называются связями. С использованием мыши выделяют ячейки включаемые в формулу. Ячейки использованные в формуле выделены цветной рамкой а ссылки на эти ячейки в формуле шрифтом того же цвета.
21617. Графические возможности Microsoft Excel 754 KB
  В окне Добавление рисунка рис.1 следует перейти в папку в которой расположен файл рисунка и дважды щелкнуть мышью по значку эскизу файла. Выбор файла рисунка Напрямую или с использованием специальных графических фильтров можно вставлять графические файлы многих распространенных форматов.
21618. Настройка и редактирование диаграмм 630 KB
  Элементы диаграммы Выделение элементов диаграмм При выделении элементов диаграммы можно использовать мышь. Для выделения элементов можно также использовать раскрывающийся список Элементы диаграммы панели Диаграммы рис. Выделение элементов диаграммы Изменение размеров диаграммы Изменение размеров всей диаграммы Диаграмма созданная на листе с данными первоначально имеет размер по умолчанию примерно в четверть видимой части листа. В большинстве случаев этот размер недостаточен для удобного просмотра и оформления диаграммы.
21619. Организация данных на листе 433 KB
  Даны рекомендации по размещению таблиц на листах. Описаны возможные действия с листами книги и особенности их выполнения. Согласно определению список это набор строк листа содержащий однородные данные; первая строка в этом списке содержит заголовки столбцов остальные строки содержат однотипные данные в каждом столбце.
21620. Оформление таблиц в Excel 345 KB
  Для ячеек в которых установлено выравнивание по левому краю отступы задаются от левого края ячейки. Для ячеек в которых установлено выравнивание по правому краю и отступы задаются от правого края. Для выравнивания по ширине необходимо выполнить команду Формат Ячейки или щелкнуть по выделенной области правой кнопкой мыши и выполнить команду контекстного меню Формат ячеек. Во вкладке Выравнивание диалогового окна Формат ячеек рис.
21621. Печать документов Предварительный просмотр листа 442.5 KB
  К сожалению не дает достаточного представления и режим просмотра Разметка страницы. Если выделено несколько рабочих листов то при нажатии кнопки Далее по достижении последней страницы текущего листа отображается первая страница следующего выделенного листа. Если выделено несколько рабочих листов то при нажатии кнопки Назад по достижении первой страницы текущего листа отображается последняя страница предыдущего выделенного листа. Перейти из полностраничного режима просмотра в режим увеличения и обратно можно также щелкнув мышью в любой...
21622. Просмотр документов в MS Excel 487 KB
  Показаны приемы перемещения по ячейкам листа и между листами книги. Показаны возможности скрытия и отображения столбцов и строк листа одновременного просмотра различных частей листа. Указаны способы выделения фрагментов листа. Просмотр документа Изменение режима просмотра листа Для изменения режима просмотра листа используют команды меню Вид.