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

 Содержание

1.<span Times New Roman"">     

 .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  .  . 3

2.<span Times New Roman"">     

  . .  .  .  .  . .  .  . .  .  . .  .  . .  .  . .  .4

3.<span Times New Roman"">     

  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  9

4.<span Times New Roman"">     

  . .  .  .  .  . .  .  . .  .  . .  .  . .  . 15

5.<span Times New Roman"">     

 .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  .  .  . .  .  . .  .  . .  .  .23

6.<span Times New Roman"">     

 .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  . .  .  .  24

1.<span Times New Roman"">    

Введение

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

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

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

Одним из примеровреализации данного подхода может служить следующий. Каждый объект, в простейшемслучае, представляет собой параллелепипед и хранится в памяти размерами по тремосям. Также в его структуру входит набор специальных точек, отвечающих засоединение блоков в пространстве. В общем случае, это точка привязки и исходнаяточка. В целом, получается гибкая графическая модель, которая позволяетизменять размеры блоков практически мгновенно. Таким образом, появляетсявозможность осуществить простейший графический редактор трехмерных объектов.При этом все блоки будут изменяться, создавая общую графическую модель. Имеядело с графической моделью, можно реализовать вращение совокупности трехмерныхобъектов. Это осуществляется с помощью набора функций, которые производятвращение объектов. Для вращения каждого объекта существует алгоритм, которыйразбивает объект (в простейшем случае параллелепипед) на набор точек, каждая изкоторых вращается, используя простейшие преобразования в пространстве путемумножения матрицы радиус-вектора на матрицы преобразований в пространстве.Рассмотрим более подробно данный подход с формальной стороны.

2.<span Times New Roman"">    

Афинные преобразования на плоскости

В компьютерной графике все, что относится к двумерному случаю принятообозначать символом (2D)(2-dimention).

Допустим, что на плоскости введена прямолинейная координатная система.Тогда каждой точке М ставится в соответствие упорядоченная пара чисел (х, у) еекоординат (рис. 1). Вводя на плоскости еще одну прямолинейную системукоординат, мы ставим в соответствие той же точке М другую пару чисел – (x*, y*).

<div v:shape="_x0000_s1037">

    0

<div v:shape="_x0000_s1036">

Y

<div v:shape="_x0000_s1035">

X

<img src="/cache/referats/668/image001.gif" v:shapes="_x0000_s1032"><div v:shape="_x0000_s1030">

M (x, y)

<img src="/cache/referats/668/image002.gif" v:shapes="_x0000_s1027"><img src="/cache/referats/668/image003.gif" v:shapes="_x0000_s1026">                                                                                                                                                                                                                                                          

Рис. 1

Переход от одной прямолинейнойкоординатной системы на плоскости к другой описывается следующими соотношениями:

x* = ax + by +l,                                                                                           (2.1)

y* = gx + by + m,                                                                                           (2.2)

где a, b, g, l, m — произвольные числа, связанныенеравенством:

<img src="/cache/referats/668/image004.gif" v:shapes="_x0000_s1039"><img src="/cache/referats/668/image005.gif" v:shapes="_x0000_s1038">           

                  a    b

                                  = 0.                                                                                        (2.3)

                   g    d

Формулы (2.1) и (2.2) можно рассматривать двояко:либо сохраняется точка и изменяется координатная система (рис. 2) – в этомслучае произвольная точка М остается той же, изменяются лишь ее координаты (х,у) | (х*, y*), либо изменяется точкаи сохраняется координатная система (рис. 3) – в этом случае формулы (2.1) и(2.2) задают отображение, переводящее произвольную точку   М (х, у) в точку М* (х*, у*), координатыкоторой определены в той же координатной системе.

                                                    X*

<img src="/cache/referats/668/image006.gif" v:shapes="_x0000_s1051"><img src="/cache/referats/668/image007.gif" v:shapes="_x0000_s1050"><div v:shape="_x0000_s1048">

    0

<div v:shape="_x0000_s1047">

Y

<div v:shape="_x0000_s1046">

X

<img src="/cache/referats/668/image001.gif" v:shapes="_x0000_s1045"><div v:shape="_x0000_s1044">

M         0*

<img src="/cache/referats/668/image002.gif" v:shapes="_x0000_s1043"><img src="/cache/referats/668/image003.gif" v:shapes="_x0000_s1042">                          Y*                                                                                                                                                                                                                           

Рис. 2

<div v:shape="_x0000_s1058">

    0

<div v:shape="_x0000_s1057">

Y

<div v:shape="_x0000_s1056">

X

<img src="/cache/referats/668/image001.gif" v:shapes="_x0000_s1055"><div v:shape="_x0000_s1054">

M

<img src="/cache/referats/668/image002.gif" v:shapes="_x0000_s1053"><img src="/cache/referats/668/image003.gif" v:shapes="_x0000_s1052">                                                                                                                                                                                                                                                          

 M* 

<img src="/cache/referats/668/image008.gif" v:shapes="_x0000_s1064"> <img src="/cache/referats/668/image009.gif" v:shapes="_x0000_s1066 _x0000_s1067">


Рис. 3

В дальнейшем, формулы (2.1) и(2.2) будут рассматриваться как правило, согласно которому в заданной системепрямолинейных координат преобразуются точки плоскости.

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

1.<span Times New Roman"">     

Поворотвокруг начальной точки на угол j (рис. 4) описывается формулами:

х* = x cosj — y sinj,                                                (2.3)

y* =x sinj- y cosj.                                                (2.4)

2. Растяжение(сжатие) вдоль координатных осей можно задать так:

                                                x* = ax,                                                       (2.5)

                                                y* = dy,                                                        (2.6)

                                             a > 0, d > 0.                                                     (2.7)

Растяжение (сжатие) вдоль осиабсцисс обеспечивается при условии, что a > 1 (a < 1). Нарис.5 a = d > 1.

3.<span Times New Roman"">   

                                                            x*= x,                                                          (2.8)

                                                            y*= -y.                                                         (2.9)

4.<span Times New Roman"">     

l, m.Перенос обеспечивает соотношения:

                                                     x* = x + l,                                                          (2.10)

                                                     y* = y + m.                                                         (2.11)

M*

<img src="/cache/referats/668/image010.gif" v:shapes="_x0000_s1082 _x0000_s1083">


<img src="/cache/referats/668/image011.gif" v:shapes="_x0000_s1084"><img src="/cache/referats/668/image012.gif" v:shapes="_x0000_s1081"><div v:shape="_x0000_s1075">

M

<div v:shape="_x0000_s1079">

    0

<div v:shape="_x0000_s1078">

Y

<div v:shape="_x0000_s1077">

X

<img src="/cache/referats/668/image002.gif" v:shapes="_x0000_s1074"><img src="/cache/referats/668/image003.gif" v:shapes="_x0000_s1073">                                                                                                                                                                                                                                                          

<img src="/cache/referats/668/image013.gif" v:shapes="_x0000_s1076 _x0000_s1080">


Рис. 4

<img src="/cache/referats/668/image014.gif" v:shapes="_x0000_s1095"><div v:shape="_x0000_s1088">

M*

<div v:shape="_x0000_s1092">

    0

<div v:shape="_x0000_s1091">

Y

<div v:shape="_x0000_s1090">

X

<img src="/cache/referats/668/image001.gif" v:shapes="_x0000_s1089"><img src="/cache/referats/668/image002.gif" v:shapes="_x0000_s1087"><img src="/cache/referats/668/image003.gif" v:shapes="_x0000_s1086">                                                                                                                                                                                                                                                          

M <img src="/cache/referats/668/image015.gif" v:shapes="_x0000_s1096 _x0000_s1097 _x0000_s1100">


Рис. 5

<img src="/cache/referats/668/image016.gif" v:shapes="_x0000_s1110"><div v:shape="_x0000_s1103">

M

<div v:shape="_x0000_s1107">

    0

<div v:shape="_x0000_s1106">

Y

<div v:shape="_x0000_s1105">

X

<img src="/cache/referats/668/image001.gif" v:shapes="_x0000_s1104"><img src="/cache/referats/668/image002.gif" v:shapes="_x0000_s1102"><img src="/cache/referats/668/image003.gif" v:shapes="_x0000_s1101">                                                                                                                                                                                                                                                          

<img src="/cache/referats/668/image017.gif" v:shapes="_x0000_s1111 _x0000_s1112 _x0000_s1113">


Рис. 6

<div v:shape="_x0000_s1117">

M*

<img src="/cache/referats/668/image018.gif" " v:shapes="_x0000_s1114"> <div v:shape="_x0000_s1130">

M*


<img src="/cache/referats/668/image019.gif" v:shapes="_x0000_s1129"><img src="/cache/referats/668/image020.gif" v:shapes="_x0000_s1128"><div v:shape="_x0000_s1120">

M

<div v:shape="_x0000_s1124">

    0

<div v:shape="_x0000_s1123">

Y

<div v:shape="_x0000_s1122">

X

<img src="/cache/referats/668/image002.gif" v:shapes="_x0000_s1119"><img src="/cache/referats/668/image003.gif" v:shapes="_x0000_s1118">                                                                                                                                                                                                                                                          

<img src="/cache/referats/668/image021.gif" v:shapes="_x0000_s1121 _x0000_s1127">


Рис. 7

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

1.<span Times New Roman"">       

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

2.<span Times New Roman"">       

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

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

Дляэффективного использования этих известных формул в задачах компьютерной графикиболее удобной является их матричная запись. Матрицы, соответствующие случаям 1– 3, строятся легко и имеют соответственно следующий вид:

<img src="/cache/referats/668/image022.gif" v:shapes="_x0000_s1133"><img src="/cache/referats/668/image023.gif" v:shapes="_x0000_s1132"><img src="/cache/referats/668/image024.gif" v:shapes="_x0000_s1131">cos j     sin j         a   0       1   0

-sinj   cos j         0   d       0  -1

3.<span Times New Roman"">    

Однородные координаты точки

Пусть М – произвольная точка плоскости скоординатами х и у, вычисленными относительно заданной прямолинейнойкоординатной системы. Однородными координатами этой точки называется любаятройка одновременно не равных нулю чисел х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 src="/cache/referats/668/image025.gif" v:shapes="_x0000_s1151">


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 src="/cache/referats/668/image026.gif" v:shapes="_x0000_s1152">


cos j    sin j    0

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

0        0        1

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

<img src="/cache/referats/668/image027.gif" v:shapes="_x0000_s1154">


a   0    0

                                              [ D ] =     0    d    0                                                      (3.6)

0   0    1

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

<img src="/cache/referats/668/image028.gif" v:shapes="_x0000_s1155">


1    0    0

                                             [M ] =     0   -1  0                                                     (3.7)

0    0   1

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

<img src="/cache/referats/668/image029.gif" v:shapes="_x0000_s1157">


1    0   0

                                             [T ] =       0    1   0                                                     (3.8)

l    m    1

Рассмотрим примеры аффинных преобразованийплоскости.

Пример 1. Построитьматрицу поворота вокруг точки А (a, b) на угол j (рис. 9).

<div v:shape="_x0000_s1160">

А

<img src="/cache/referats/668/image030.gif" v:shapes="_x0000_s1167"><img src="/cache/referats/668/image031.gif" v:shapes="_x0000_s1166"><div v:shape="_x0000_s1164">

    0

<div v:shape="_x0000_s1163">

Y

<div v:shape="_x0000_s1162">

X

<img src="/cache/referats/668/image002.gif" v:shapes="_x0000_s1159"><img src="/cache/referats/668/image003.gif" v:shapes="_x0000_s1158">                                                                                                                                                                                    j                                                                    

<img src="/cache/referats/668/image032.gif" v:shapes="_x0000_s1161 _x0000_s1165">


Рис. 8

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

<img src="/cache/referats/668/image033.gif" v:shapes="_x0000_s1168">


1    0   0

                                           [ T-A ] =    

еще рефераты
Еще работы по программированию, базе данных