Реферат: Задачи графических преобразований в приложениях моделирования с использованием ЭВМ

--PAGE_BREAK--


<img width=«80» height=«56» src=«ref-1_370083794-635.coolpic» v:shapes="_x0000_s1056"><img width=«6» height=«6» src=«ref-1_370084429-203.coolpic» v:shapes="_x0000_s1057">        <img width=«214» height=«9» src=«ref-1_370077043-252.coolpic» v:shapes="_x0000_s1062"><img width=«9» height=«185» src=«ref-1_370084884-272.coolpic» v:shapes="_x0000_s1063">                                                                                                                                                                                                                                                           

<img width=«112» height=«98» src=«ref-1_370085156-838.coolpic» v:shapes="_x0000_s1065 _x0000_s1064">



Рис. 4
<img width=«175» height=«146» src=«ref-1_370085994-809.coolpic» v:shapes="_x0000_s1066">        <img width=«11» height=«11» src=«ref-1_370076774-269.coolpic» v:shapes="_x0000_s1071"><img width=«214» height=«9» src=«ref-1_370077043-252.coolpic» v:shapes="_x0000_s1072"><img width=«9» height=«185» src=«ref-1_370077295-272.coolpic» v:shapes="_x0000_s1073">                                                                                                                                                                                                                                                           

<img width=«90» height=«100» src=«ref-1_370087596-1069.coolpic» v:shapes="_x0000_s1076 _x0000_s1075 _x0000_s1074">



Рис. 5
<img width=«146» height=«127» src=«ref-1_370088665-1105.coolpic» v:shapes="_x0000_s1077">        <img width=«11» height=«11» src=«ref-1_370076774-269.coolpic» v:shapes="_x0000_s1082"><img width=«214» height=«9» src=«ref-1_370077043-252.coolpic» v:shapes="_x0000_s1083"><img width=«9» height=«185» src=«ref-1_370077295-272.coolpic» v:shapes="_x0000_s1084">                                                                                                                                                                                                                                                           

<img width=«127» height=«217» src=«ref-1_370090563-1243.coolpic» v:shapes="_x0000_s1087 _x0000_s1085 _x0000_s1086">



Рис. 6

  <img width=«11» height=«11» src=«ref-1_370091806-283.coolpic» v:shapes="_x0000_s1089">  



<img width=«11» height=«12» src=«ref-1_370092089-254.coolpic» v:shapes="_x0000_s1091"><img width=«50» height=«98» src=«ref-1_370092343-746.coolpic» v:shapes="_x0000_s1092">        <img width=«214» height=«9» src=«ref-1_370077043-252.coolpic» v:shapes="_x0000_s1097"><img width=«9» height=«185» src=«ref-1_370077295-272.coolpic» v:shapes="_x0000_s1098">                                                                                                                                                                                                                                                           
<img width=«50» height=«40» src=«ref-1_370093613-477.coolpic» v:shapes="_x0000_s1099 _x0000_s1100">



Рис. 7
Выбор этих четырех частных случаев определяется двумя обстоятельствами.

1.        Каждое из приведенных выше преобразований имеет простой и наглядный геометрический смысл (геометрическим смыслом наделены и постоянные числа, входящие в приведенные формулы).

2.        Как известно из курса аналитической геометрии, любое преобразование вида (2.1) всегда можно представить как последовательное исполнение (суперпозицию) простейших преобразований вида 1 – 4 (или части этих преобразований).

Таким образом, справедливо следующее важное свойство аффинных преобразований плоскости: любое отображение вида (2.1) можно описать при помощи отображений, задаваемых формулами  (2.3) – (2.11).

Для эффективного использования этих известных формул в задачах компьютерной графики более удобной является их матричная запись. Матрицы, соответствующие случаям 1 – 3, строятся легко и имеют соответственно следующий вид:
<img width=«41» height=«60» src=«ref-1_370094090-425.coolpic» v:shapes="_x0000_s1101"><img width=«40» height=«60» src=«ref-1_370094515-417.coolpic» v:shapes="_x0000_s1102"><img width=«98» height=«60» src=«ref-1_370094932-545.coolpic» v:shapes="_x0000_s1103">cos j     sin j         a   0       1   0

-sin j    cos j         0   d       0  -1
3.    
Однородные координаты точки


Пусть М – произвольная точка плоскости с координатами х и у, вычисленными относительно заданной прямолинейной координатной системы. Однородными координатами этой точки называется любая тройка одновременно не равных нулю чисел х1, х2, х3, связанных с заданными числами х и у следующими соотношениями:
x1 / x3 = x,  x2 / x3 = y                                                (3.1)
При решении задач компьютерной графики однородные координаты обычно вводятся так: произвольной точке М (х, у) плоскости ставится в соответствие точка МЭ (х, у, 1) в пространстве.

Необходимо заметить, что произвольная точка на прямой, соединяющей начало координат, точку О (0, 0, 0), с точкой МЭ (х, у, 1), может быть задана тройкой чисел вида (hx, hy, h).

Будем считать, что h = 0. Вектор с координатами hx, hy, h является направляющим вектором прямой, соединяющей точки О (0, 0, 0) и МЭ (х, у, 1). Эта прямая пересекает плоскость z = 1 в точке (х, у, 1), которая однозначно определяет точку (х, у) координатной плоскости ху.

Тем самым между произвольной точкой с координатами (х, у) и множеством троек чисел вида (hx, hy, h), h = 0, устанавливается взаимно однозначное соответствие, позволяющее считать числа hx, hy, h новыми координатами этой точки.

Широко используемые в проективной геометрии однородные координаты позволяют эффективно описывать так называемые несобственные элементы (по существу, те, которыми проектная плоскость отличается от привычной евклидовой плоскости).

В проективной геометрии для однородных координат принято следующее обозначение:
х: у: 1                                                          (3.2)
или, более общо,
                                                            х1: х2: х3                                                        (3.3)  
(здесь непременно требуется, чтобы числа х1, х2, х3 одновременно в нуль не обращались).

Применение однородных координат оказывается удобным уже при решении простейших задач.

Рассмотрим, например, вопросы, связанные с изменением масштаба. Если устройство отображения работает только с целыми числами (или если необходимо работать только с целыми числами), то для произвольного значения h (например, h = 1) точку с однородными координатами (0.5, 0.1, 2.5) представить нельзя. Однако при разумном выборе h можно добиться того, чтобы координаты этой точки были целыми числами. В частности, при h = 10 для рассматриваемого примера имеем (5, 1, 25).

Рассмотрим другой случай. Чтобы результаты преобразования не приводили к арифметическому переполнению для точки с координатами (80000, 40000, 1000) можно взять, например, h = 0.001. В результате получим (80, 40, 1).

Приведенные примеры показывают полезность использования однородных координат при проведении расчетов. Однако основной целью введения однородных координат в компьютерной графике является их несомненное удобство в применении к геометрическим преобразованиям.

При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное преобразование плоскости.

Считая, h = 1, сравним две записи:

<img width=«79» height=«98» src=«ref-1_370095477-689.coolpic» v:shapes="_x0000_s1104">


a    g    0

(x * y * 1) = (x y 1)      b    d    0                                             (3.4)

l    m    1
Нетрудно заметить, что после перемножения выражений, стоящих в правой части последнего соотношения, мы получим формулы (2.1) и (2.2) и верное числовое равенство 1 = 1. Тем самым сравниваемые записи можно считать равносильными.

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

На каждом этапе пишется матрица, соответствующая тому или иному из выделенных выше случаев 1 – 4, обладающих хорошо выраженными геометрическими свойствами.

Выпишнм соответствующие матрицы третьего порядка.

А. Матрица вращения (rotation)

<img width=«127» height=«98» src=«ref-1_370096166-807.coolpic» v:shapes="_x0000_s1105">


cos j    sin j    0

                                         [ R ] =    -sin j   cos j   0                                                 (3.5)

0        0        1
Б. Матрица растяжения-сжатия (dilatation)

<img width=«89» height=«98» src=«ref-1_370096973-725.coolpic» v:shapes="_x0000_s1106">


a    0    0

                                              [ D ] =     0    d    0                                                      (3.6)

0    0    1
            В.  Матрица отражения (reflection)

<img width=«79» height=«108» src=«ref-1_370097698-679.coolpic» v:shapes="_x0000_s1107">


1    0    0

                                             [ M ] =     0   -1   0                                                      (3.7)

0    0    1
            Г.  Матрица переноса (translation)

<img width=«89» height=«107» src=«ref-1_370098377-710.coolpic» v:shapes="_x0000_s1108">


1    0    0

                                             [ T ] =       0    1    0                                                      (3.8)

l    m    1
Рассмотрим примеры аффинных преобразований плоскости.
Пример 1. Построить матрицу поворота вокруг точки А (a, b) на угол j (рис. 9).
  <img width=«24» height=«60» src=«ref-1_370099087-490.coolpic» v:shapes="_x0000_s1110"><img width=«146» height=«107» src=«ref-1_370099577-1211.coolpic» v:shapes="_x0000_s1111">      <img width=«214» height=«9» src=«ref-1_370077043-252.coolpic» v:shapes="_x0000_s1115"><img width=«9» height=«185» src=«ref-1_370084884-272.coolpic» v:shapes="_x0000_s1116">                                                                                                                                                                                    j                                                                    

<img width=«203» height=«11» src=«ref-1_370101312-340.coolpic» v:shapes="_x0000_s1117 _x0000_s1118">



Рис. 8
    продолжение
--PAGE_BREAK--1-й  шаг. Перенос на вектор – А (-a, -b) для смещения центра поворота с началом координат;

<img width=«89» height=«108» src=«ref-1_370101652-732.coolpic» v:shapes="_x0000_s1119">


1    0    0

                                           [ T-A ] =      0    1    0                                                      (3.9)

-a   -b   1
матрица соответствующего преобразования.

            2-й  шаг. Поворот на угол j;
<img width=«146» height=«88» src=«ref-1_370102384-739.coolpic» v:shapes="_x0000_s1120">cos j    sin j    0

                                     [ Rj] =      -sin j    cos j   0                                              (3.10)

0          0           1
матрица соответствующего преобразования.

3-й  шаг. Перенос на вектор А (a, b) для возвращения центра поворота в прежнее положение;
<img width=«89» height=«108» src=«ref-1_370101652-732.coolpic» v:shapes="_x0000_s1121">


1    0    0

                                           [ TA ] =      0    1    0                                                    (3.11)

a   b    1
матрица соответствующего преобразования.

Перемножим матрицы в том же порядке, как они выписаны:

[ T-A ] [ Rj] [ TA ].

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

<img width=«329» height=«107» src=«ref-1_370103855-992.coolpic» v:shapes="_x0000_s1122">


                                          cos j                            sin j                             

(x*  y*  1)  =  (x  y  1)      -sin j                            cos j                            0     (3.12)     

                                         -a cos j + b sin j +a    -a sin j — b cos j+ b   1
Элементы полученной матрицы (особенно в последней строке) не так легко запомнить. В то же время каждая из трех перемножаемых матриц по геометрическому описанию соответствующего отображения легко строится.
            Пример 2. Построить матрицу растяжения с коэффицентами растяжения aвдоль оси абсцисс и b вдоль оси ординат и с центром в точке А (a, b).

            1-й  шаг. Перенос на вектор –А (-a, -b) для совмещения центра растяжения с началом координат;
<img width=«89» height=«108» src=«ref-1_370101652-732.coolpic» v:shapes="_x0000_s1123">


1    0    0

                                           [ T-A ] =      0    1    0                                                    (3.13)

-a   -b   1
матрица соответствующего преобразования.

2-й  шаг. Растяжение вдоль координатных осей с коэффицентами a иb соответственно; матрица преобразования имеет вид
<img width=«89» height=«98» src=«ref-1_370096973-725.coolpic» v:shapes="_x0000_s1124">


a    0    0

                                              [ D ] =     0    d    0                                                    (3.14)

0    0    1
3-й  шаг. Перенос на вектор А (a, b) для возвращения центра растяжения в прежнее положение; матрица соответствующего преобразования:
<img width=«89» height=«108» src=«ref-1_370101652-732.coolpic» v:shapes="_x0000_s1125">


1    0    0

                                           [ TA ] =      0    1    0                                                    (3.15)

a   b    1
Премножив матрицы в том же порядке

[ T-A ] [ D ] [ TA ],

<img width=«242» height=«136» src=«ref-1_370107036-1101.coolpic» v:shapes="_x0000_s1126">получим окончательно
                                               a                     0                     0

  ( x*  y*  1)   =   (x  y  1)       0                     d                     0                                 (3.16)

                                                (1 — a)a           (1 — d)b           1
Рассуждая подобным образом, то есть разбивая предложенное преобразование на этапы, поддерживаемые матрицами [ R ], [ D ], [ M ], [ T ], можно построить матрицу любого аффинного преобразования по его геометрическому описанию.
4.    
Аффинные преобразования в пространстве


Рассмотрим трехмерный случай (3D) (3-dimension) и сразу введем однородные координаты.

Потупая аналогично тому, как это было сделано в размерности два, заменим координатную тройку (x, y, z), задающую точку в пространстве, на четверку чисел

(x  y  z  1)

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

(hx  hy  hz),  h = 0.

Каждая точка пространства (кроме начальной точки О) может быть задана четверкой одновременно не равных нулю чисел; эта четверка чисел определена однозначно с точностью до общего множителя.

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

Любое аффинное преобразование в трехмерном пространстве может быть представленно в виде суперпозиции вращений, растяжений, отражений и переносов. Поэтому вполне уместно сначала подробно описать матрицы именно этих преобразований (ясно, что в данном случае порядок матриц должен быть равен четырем).

А. Матрицы вращения в пространстве.

    Матрица вращения вокруг оси абсцисс на угол  j:

<img width=«194» height=«127» src=«ref-1_370108137-1019.coolpic» v:shapes="_x0000_s1127">


  1      0            0         0

0          cos j     sin j     

0    -sin j     cos j    0

0         0         0         1
                  Матрица вращения вокруг оси ординат на угол y:

<img width=«194» height=«127» src=«ref-1_370108137-1019.coolpic» v:shapes="_x0000_s1130">


  cos y      0   -sin y   0

  0         1        0         1

sin y     0    cos y   0

0         0         0         1
Матрица вращения вокруг оси аппикат на угол c:

<img width=«194» height=«127» src=«ref-1_370108137-1019.coolpic» v:shapes="_x0000_s1133">


  cos c   sin c     0      0

-sin   c    cos c    0      0

0         0           1     0

0         0            0      1
Полезно обратить внимание на место знака “ — ” в каждой из трех приведенных матриц.

Б. Матрица растяжения-сжатия:
<img width=«146» height=«118» src=«ref-1_370111194-901.coolpic» v:shapes="_x0000_s1136">


a      0      0      0

    0      b      0      0

0      0      g      0

0      0      0      1
где

a> 0 – коэффицент растяжения (сжатия) вдоль оси абсцисс;

b > 0 – коэффицент растяжения (сжатия) вдоль оси ординат;

g > 0 – коэффицент растяжения (сжатия) вдоль оси аппликат.
В. Матрицы отражения

    Матрица отражения относительно плоскости ху:

 <img width=«146» height=«118» src=«ref-1_370111194-901.coolpic» v:shapes="_x0000_s1139">

1      0      0      0

    0      1      0      0

0      0      -1      0

0      0      0      1
Матрица отражения относительно плоскости yz:

<img width=«146» height=«118» src=«ref-1_370111194-901.coolpic» v:shapes="_x0000_s1142">


-1      0      0      0

    0      1      0      0

0      0      1      0

0      0      0      1
  Матрица отражения относительно плоскости zx:

<img width=«146» height=«118» src=«ref-1_370111194-901.coolpic» v:shapes="_x0000_s1145">


1      0      0      0

    0      -1      0      0

0      0      1      0

0      0      0      1
    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по математике