Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерная графика и геометрическое моделирование в информационных системах. Учебное пособие для бакалавров направлений подготовки 230100 «Информати.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Тамбовский государственный технический университет»
С. А. ВАСИЛЬЕВ, И. В. МИЛОВАНОВ
КОМПЬЮТЕРНАЯ ГРАФИКА И
ГЕОМЕТРИЧЕСКОЕ МОДЕЛИРОВАНИЕ
В ИНФОРМАЦИОННЫХ СИСТЕМАХ
Утверждено Учёным советом университета
в качестве учебного пособия для бакалавров направлений подготовки
230100 «Информатика и вычислительная техника»,
230400 «Информационные системы и технологии»
очной формы обучения
Учебное электронное издание
комплексного распространения
Тамбов
Издательство ФГБОУ ВПО «ТГТУ»
2015
1
УДК 004.92(075.8)
Á973-018.4я73
ББК В191
Рецензенты:
Доктор технических наук, профессор заведующий кафедрой
«Компьютерное и математическое моделирование»
ФГБОУ ВПО «ТГУ им. Г. Р. Державина»
А. А. Арзамасцев
Доктор технических наук, профессор заведующий кафедрой
«Компьютерно-интегрированные системы в машиностроении»
ФГБОУ ВПО «ТГТУ»
В. Н. Немтинов
Васильев, С. А.
В191 Компьютерная графика и геометрическое моделирование в
информационных системах [Электронный ресурс] : учебное пособие для бакалавров направлений подготовки 230100 «Ин­форматика и вычислительная техника», 230400 «Информацион­ные системы и технологии» очной формы обучения / С. А. Ва­сильев, И. В. Милованов. – Тамбов : Изд-во ФГБОУ ВПО «ТГТУ», 2015. – 1 электрон. опт. диск (CD-ROM). – Системные
ования : ПК не ниже класса Pentiu
треб
38,2 Mb RAM ; Windows 95/98/XP ; мышь. –
m II ; CD-ROM-дисковод
Загл. с экрана.
ISBN 978-5-8265-1432-0.
Рассмотрены основные алгоритмы растровой компьютерной графи­ки и способы построения базовых элементов геометрического модели­рования.
Предназначено для бакалавров направлений подготовки 230100 «Информатика и вычислительная техника», 230400 «Информационные системы и технологии» очной формы обучения, изучающих дисципли­ны «Компьютерная графика» и «Геометрическое моделирование».
УДК 004.92(075.8)
Á973-018.4я73
ББК
Все права на размножение и распространение в любой форме остаются за разработчиком.
Нелегальное копирование и использование данного продукта запрещено.
ISBN 978-5-8265-1432-0
2
© Федеральное государственное бюджетное
образовательное учреждение высшего профессионального образования «Тамбовский государственный технический университет» (ФГБОУ ВПО «ТГТУ»), 2015

ВВЕДЕНИЕ

Главная функция компьютера – логическая и арифметическая об­работка информации. Большую часть современный компьютер обраба­тывает информацию, связанную с изображением графики. Здесь сле­дует выделить три основных направления: компьютерная графика, обработка изображений и распознавание образов.
На сегодняшний день главенствующую роль в устройствах выво­да графической информации занимают устройства с растровой органи­зацией. Это к
асается и печатающи ранного вывода данных, где в качестве растра имеется матрица ячеек (пикселей). Совокупность пикселей различных значений по цвету формирует изображение. Для формирования растровых изображений и их изучения существует специальная наука – компьютерная графика.
В настоящее время компьютерная графика и геометрическое мо­делирование используется почти во всех научных и ин тельностях для восприятия объектов созидания. Современный спе­циалист в области информационных технологий обязан знать их ос­новы и применять знания в области визуализации в своей научной или инженерной деятельности. Компьютерная графика и геометриче­ское моделирование органично вторгаются в бизнес, медицину, рек­ламу и ин
дустрию р
азвлечений.
Материалы данного пособия базируются на реальных курсах дис­циплин «Компьютерная графика» и «Геометрическое моделирование», читаемых в Тамбовском государственном техническом университете на кафедре САПР.
В основе пособия лежит обобщение опубликованных в открытой печати классических материалов по компьютерной графике и геомет­рическому моделированию таких авторов, как: Фоли Дж., вэн Дэм А [1
рс Д. [2], Павлидис Т. [3], Гардан И. [4] и Порев В. Н. [5]. Дан-
Родже ные работы были опубликованы в различные времена, начиная с 1985 и заканчивая 2006 годом. На сегодняшний день современная индуст­рия компьютерной визуализации базируется на алгоритмах вышепри­ведённых авторов.
Пособие в целом может быть использовано для изучения основ­ных тем компьютерной графики и инструмента моделирования.
х устройств, а также устройств эк-
ж
енерных дея-
еометрического
рия г
],
3
1. АЛГОРИТМ БРЕЗЕНХЕМА ДЛЯ ПРЕОБРАЗОВАНИЯ ОТРЕЗКОВ ПРЯМЫХ ИЗ ВЕКТОРНОЙ ФОРМЫ
Основная цель любого алгоритма развёртки отрезка из векторной формы в растровую сводится к определению координат пикселей, ле­жащих вблизи реального отрезка на двумерной растровой сетке. Для выполнения подобной задачи предположим, что начальная и конечная точки отрезка имеют целочисленные координаты. Наиболее простым способом перевода отрезка в растровую форму считается алгоритм, когда пошагово увеличивается значение x, вычисляетс итоге, подсвечивается пиксель в точке (x, ROUND (y)). Главным не- достатком данного алгоритма считается вычисление произведения mx, что требует процессорного времени компьютера. Более того, все ариф­метические операции будут выполняться с вещественными числами, а во время непосредственного вывода пикселей в растр будет осу ляться компь
ютерная операция округления вещественных чисел до це­лого значения – ROUND. Вышеперечисленные недостатки представлен­ного алгоритма не позволяют его использовать с высокой эффективно­стью при формировании растровых изображений с большим количест­вом отрезков прямых, например, полигональная сетка в движении.
Одним из способов повышения эффективности вышеприведённо­го алгоритма является исключение операции умножения mx. При вн мательном изучении циент m = dy/dx вычисляется как m = dy, т.е. изменение x на 1 приводит к изменению y на m (тангенс угла наклона отрезка). Следовательно, если
+ ii
, то
11+=
xx
ждая новая пара значений точки растра (x и y) определяется, исходя из значений этих величин на предыдущем шаге. Если m > 1, то измене- ние значения dx на 1 будет приводить к изменению dy > 1. При таких углах наклона отрезка прямой в алгоритме растрового представления отрезка x и y следует поменять ролями. Изм будет увеличиваться на dx = dy/m = 1/m. Такой алгоритм растрового представления отрезка прямой называется простым пошаговым алго-
ритмом [1].
За простотой алгоритма и устранения операции умножения mx опять скрываются некоторые недостатки, присущие самому первому алгоритму из этой тематики. Остались вещественные значения вели­чин y и m и оп
ерация окр
Для устранения вышеперечисленных недостатков применяется целочисленный алгоритм Брезенхема [1] для построения отрезков прямых в растровой форме.
4
В РАСТРОВУЮ
mx + b и, в
я y =
ществ-
и-
алгоритма было замечено, что при dx = 1 коэффи-
для всех точек
myy
ii+=+1
еняя на еди
угления ROUND при выводе пикселей в растр.
отрезка. Ка-
),(iiyx
ничный шаг y, x
Пусть требуется построить отрезок прямой из начальной точки
−
=
(
)
, Y1) в конечную точку (X2, Y2). И тангенс угла наклона отрезка на-
(X
1
ходится в диапазоне 0 – 1. Фрагмент отрезка и растрового его пред­ставления представлен на рис. 1.1. Для формирования в растровой форме отрезка будем использовать значения управляющей переменной d значение которой будет вычисляться на каждом шаге построения от­резка. Числовое значение d
прямой пропорционально разности значе-
i
ний расстояний s и t отрезка прямой до ближайших растровых пиксе­лей по вертикали. На i-м шаге построения отрезка прямой, когда пре­дыдущий пиксель P точек T
S
или Si будет ближе расположена к прямой. Если s < t, то точка
i
наиболее близко расположена к векторному изображению отрезка, в
i
противном случае выбираем точку T
уже известен, требуется определить, какая из
i – 1
.
i
Работа алгоритма Брезенхема начинается с определения началь­ного значения управляющей переменной d
dy = Y
– Y1 и dx = X2 – X1. При каждом изменении значения 1
2
определяем знак (!) управляющей переменной
а) если следующего шага
б) если дующего шага
> 0, то выбираем пиксель Ti, тогда
d
i
dxdydd
−+=+2
ii
1
< 0, то выбираем пиксель S
d
i
.
dydd
ii21+=+
;
, как dxdyd
i
d
i
, тогда
i
2
1
, где
xx
1+=−ii
:
и для
11+=
yy
−ii
и для сле-
yy
1−=ii
,
i
Рис. 1.1. Иллюстрация отрезка прямой
5
Рассмотрим пример по­строения отрезка прямой из точки (5, 8) в точку (9, 11). Для каждого шага изменения x
были вычисле-
i
ны значения управляющей пере­менной
:id 2, 0, –2, 4 и 2. По по-
лученным данным был построен отрезок прямой в растровой фор­ме, внешний вид которого пред­ставлен на рис. 1.2.
Рис. 1.2. Отрезок прямой в растре
Подытоживая алгоритм Бре­зенхема для построения отрезков прямых в растровой форме, можно
отметить, что для его реализации требуются только целые числа и ми­нимальное количество арифметических целочисленных операций про­цессора ЭВМ, таких как вы
читание, слож
ение, и сдвиг влево (для осу­ществления операции умножения на два). Такая вычислительная орга­низация алгоритма хорошо сказывается на его быстродействии по­строения отрезка прямой, особенно когда требуется строить в режиме анимации сложные полигональные сетки 3D-объектов.
2. АЛГОРИТМ БРЕЗЕНХЕМА
ДЛЯ РАСТРОВОЙ РАЗВЁРТКИ ОКРУЖНОСТИ
Обзор литературы [1] показал, что существует несколько простых способов построения окружности в растровой форме. Наиболее про­стой способ построения окружности в растровой сетке это способ формирования графика уравнения окружности x стоты построения рассмотрим окружность с центром в начале системы
координат. Из уравнения окружности
выделим y, как посмотреть на такую окружность с
точки зрения растрового представле­ния, то можно заметить симметрич­ность её частей по отношению к осям X и Y. Поэтому на практике строить окружность по этому уравнению
Рис. 2.1. Четвёртая
часть окружности
можно более эффективно, если огра­ничиться вычислением, лишь дуги в 1/4 окружности, а все остальное вы­полнит симметрия.
2
+ y2 = R2. Для про-
22
xry −±=
. Если
6
Для изображения четвёртой части окружности достаточно опреде­лить положительное значение y
, который варьируется в диапазоне значений [0 – R] с шагом 1. Предло-
x
i
для изменяющегося аргумента функции
i
женный способ построения окружности работоспособен, но не очень эффективен с точки зрения работы центрально процессора ЭВМ, так как в него входят долго исполняющиеся операции умножения и извлече­ния квадратного корня. Кроме этого, построенная окружность по вы­шеприведённому алгоритму не обладает высокими ху
аметрами. А именно, при значениях y, близких к значению R, в рас-
пар
дожественными
тровом изображении окружности можно заметить незаполненные про­межутки (рис. 2.1), так как в этой окрестности на единичное изменение x происходит скачкообразное, больше чем на значение 1, изменение y.
Брезенхем [1] предложил пошаговый алгоритм построения дуг 1/8 окружности, свободный от недостатков, присущих методу по
жности по его уравнению.
окру
строения
Алгоритм Брезенхема рассматривается для случая обхода лишь дуги окружности в 45° от x = 0 до
2Rx = . Для формирования пол-
ной окружности используется восьмисторонняя симметрия (рис. 2.2).
Рис. 2.2. Восьмисторонняя симметрия алгоритма
Рис. 2.3. Возможные пиксели окружности Брезенхема
7
Идея алгоритма подобна построению отрезков прямых в растро-
++=
′
вой форме. Точки окружности (дуги) строятся в зависимости от знака управляющей переменной d
В данном алгоритме x нении x
выбирается точка Pi(xi, yi) наиболее близко расположенная к
i
, где i – шаг изменения значения xi.
i
изменяется с шагом 1. При каждом изме-
i
истинной окружности. Расстояние до истинной окружности опреде-
222
)()( RyxPD
лятся ошибкой
−+= . Чем меньше значение этой
iii
ошибки, тем ближе к окружности находится точка растровой формы окружности, т.е. значение
минимизируется на каждом шаге.
)(iPD
Предположим, что на (i – 1)-м шаге работы алгоритма точка
, y
P
i – 1(xi – 1
определим, какая из двух точек T ности x
i – 1
а) если d го шага d
б) если d
= di + 4(x
d
i + 1
) была выбрана как ближайшая к окружности. Теперь
i – 1
или Si расположена ближе к окруж-
i
+ 1:
< 0, то выберем точку Si (X
i
= di + 4x
i + 1
≥ 0, то Ti (X
i
i – 1
– y
i – 1
i – 1
+ 6;
i – 1
) + 10.
+ 1, Y
+ 1, Y
i – 1
– 1) и для следующего шага
i – 1
) и для следующе-
i – 1
На начальном этапе работы алгоритма управляющая переменная
определяется как d1 = 3 – 2R.
d
1
В данном алгоритме так же, как и в алгоритме Брезенхема для растрового построения отрезков прямых, не используются веществен­ные числа и операции округления при формировании координат выво­да пикселей в растр.
3. АФФИННЫЕ ПРЕОБРАЗОВАНИЯ
Неотъемлемой частью интерактивной компьютерной графики яв­ляются различные геометрические преобразования как двумерных, так и трёхмерных объектов, типа вращение, масштабирование и перенос.
Для 2D-объектов на плоскости геометрические преобразования описываются аффинными преобразованиями, которые могут быть представлены следующими соотношениями [3]:
где A, B, …, F – константы; x, y – значения точки до преобразования;
yx′′, – новые координаты точек 2D-объектов.
Остановимся на основных двумерных преобразованиях для 2D- объектов.
Двумерное перемещение (сдвиг) объекта на величину D на D
y
8
НАД ДВУМЕРНЫМИ ОБЪЕКТАМИ
CByAxx
′
по оси Y (рис. 3.1) описывается следующей системой уравнений:
,;FEyDxy
++=
по оси X и
x
′
=
Dxx
+=
⎧ ⎨ ⎩
;
x
.Dyy'
+=
y
В однородных коорди­натах [3] операция двумер­ного перемещения имеет вид
′′
[]
yx
1
⎡
[]
или P′ = PT (Dx, Dy), где
⎢
yx
1
⋅=
⎢ ⎢
⎣
⎤
001
⎥
010
⎥ ⎥
DD
1
yx
⎦
Рис. 3.1. Перемещение
⎡ ⎢
DDT
=
),(
yx
⎢ ⎢
DD
⎣
yx
⎤
001
⎥
.
010
⎥ ⎥
1
⎦
Благодаря однородным координатам все три преобразования (сдвиг, масштабирование и поворот) над 2D-объектом можно реализо-
вать с помощью операции умножения вектора на матрицу, что подни­мает результативность работы графической программы, использую­щей подобные геометрические преобразования.
Точка P(x, y) записывается в однородных координатах, как P(xW, yW, W) для любого масштабного множителя W ≠ 0. Если точка
родных координатах P(X, Y, W), то можно найти её дву-
задана в одн
о мерные декартовые координаты, как x = X/W и y = Y/W. На практике масштабный коэффициент W всегда равен 1, поэтому операция деле­ния не требуется. Для понимания сути однородных координат можно представить, как вло
жение пpомасштабиpованно
й с коэффициентом W двумерной плоскости в плоскость z = W (здесь z = 1) в трёхмерном пространстве.
Рис. 3.2. Масштабирование
9
Двумерное масштабирование геометрического объекта в Sx раз по
[
′
′
[
′
[
оси X и в S
или P′ = P ⋅ S(Sx, Sy), где
раз по оси Y (рис. 3.2) определяется системой уравнений:
y
′
;
=
Sxx
⎧ ⎨ ⎩
x
′
.
=
Syy
y
В однородных координатах двумерное масштабирование имеет вид
S
⎡
x
]
1yx
=
⎡ ⎢
=
),(
SSS
yx
⎢ ⎢
⎣
⎢
]
1yx ⋅
⎢ ⎢
⎣
S
x
00
00
S
y
100
00
⎤ ⎥
00
S
y
⎥ ⎥
100
⎦
⎤ ⎥
.
⎥ ⎥
⎦
Двумерный поворот графического объекта вокруг точки начала координат (0, 0) на угол α (рис. 3.3) определяется следующей системой уравнений:
′
⎧ ⎨
′
⎩
В однородных координатах двумерный поворот имеет вид
⎡
′
[]
=
1yx
⎢
]
⋅
1yx
⎢ ⎢
⎣
⎡ ⎢
Или P′ = P R(α), где
)(R
⎢ ⎢
⎣
α−α=
);sin()cos(
yxx
yxy
α+α=
).cos()sin(
αα
0)sin()cos(
⎤ ⎥
αα−
0)cos()sin(
.
⎥ ⎥
100
⎦
0)sin()cos(
⎤ ⎥
αα−αα=α
0)cos()sin(
.
⎥ ⎥
100
⎦
Рис. 3.3. Поворот
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]