
- •1. Зарождение компьютерной графики.
- •2. 1960-е годы. Становление КГ.
- •1.2. Области применения компьютерной графики
- •1.4. Устройства вывода компьютерной графики
- •Контрольные вопросы и упражнения
- •2. АРХИТЕКТУРА ГРАФИЧЕСКИХ РАБОЧИХ СТАНЦИЙ
- •2.1. Рабочие станции
- •2.2. Графический ускоритель
- •2.4. Технология 3D-графики
- •Контрольные вопросы и упражнения
- •3.1. Общие положения методов представления видеоинформации
- •3.2. Алгоритмы архивации без потерь
- •3.3. Алгоритмы архивации с потерями
- •Контрольные вопросы и упражнения
- •4. ГЕОМЕТРИЧЕСКОЕ МОДЕЛИРОВАНИЕ
- •4.1. Представление моделей
- •4.2. Способы представления объектов
- •Представление поверхностных моделей
- •4.4. Алгоритмы построения геометрических моделей тел
- •4.4.1. Построение правильных многогранников
- •4.4.2. Построение икосаэдра
- •4.4.3. Построение додекаэдра и сферы
- •Аффинные преобразования на плоскости
- •Однородные координаты точки
- •Аффинные преобразования в пространстве
- •Изометрическая проекция
- •Пример:
- •Перспективная проекция
- •5.4. Этапы создания графического объекта
- •Преобразования положения объекта
- •5.5. Работа с матрицами и векторами
- •Контрольные вопросы и упражнения
- •6.1.2. Простой метод устранения ступенчатости
- •6.1.3. Алгоритм Ву для растеризации отрезка с антиалиасингом
- •6.3. Закраска области, заданной цветом границы
- •Контрольные вопросы и упражнения
- •7. ЗАДАЧА ОТСЕЧЕНИЯ
- •7.1. Отсечение отрезков
- •7.1.4. Двумерный алгоритм Кируса-Бека
- •7.1.5. Проверка выпуклости и определение нормалей
- •7.2. Разбиение невыпуклых многоугольников
- •Алгоритм Сазерленда-Ходгмана
- •Контрольные вопросы и упражнения
- •8.4. Задача вычисления точек пересечений
- •8.4.1. Пересечение луча со сферой
- •8.4.3. Пересечение луча с многоугольником
- •8.4.4. Пересечение луча с треугольником
- •Решение будет состоять из следующих шагов:
- •Если мы вычислим единичные векторы Pa1, Pa2, Pa3
- •тогда углы будут равны
- •8.4.5. Пересечение с прямоугольным параллелепипедом
- •Контрольные вопросы и упражнения
- •9. АЛГОРИТМЫ УДАЛЕНИЯ СКРЫТЫХ ЛИНИЙ И ПОВЕРХНОСТЕЙ
- •9.1. Классификация методов удаления невидимых частей
- •9.2.1. Отсечение нелицевых граней
- •9.2.2. Ограничивающие тела (Bounding Volumes)
- •9.2.4. Иерархические структуры (Hierarchies)
- •9.3. Алгоритмы удаления линий
- •9.4.1. Алгоритм удаления поверхностей с Z-буфером
- •Построчный z-буфер
- •9.4.2. Алгоритм разбиения области Варнока
- •9.4.3. Построчный алгоритм Уоткинса
- •9.4.4. Алгоритм трассировки лучей
- •9.4.5. Алгоритмы упорядочения
- •9.4.6. Метод сортировки по глубине. Алгоритм художника
- •9.4.7. Метод двоичного разбиения пространства
- •9.5. Пример реализации алгоритма удаления невидимых граней
- •Контрольные вопросы и упражнения
- •10. ПОСТРОЕНИЕ РЕАЛИСТИЧЕСКИХ ИЗОБРАЖЕНИЙ
- •10.1. Модели освещения
- •10.1.1. Механизм диффузного и зеркального отражения света
- •10.1.2. Модели закраски
- •10.1.3. Прозрачность
- •10.1.4. Тени
- •10.2. Фактура (текстурирование)
- •10.4. Трассировка лучей
- •10.5. Излучательность
- •Контрольные вопросы и упражнения
- •11. ИНТЕРАКТИВНЫЕ СИСТЕМЫ. СОВРЕМЕННЫЕ СТАНДАРТЫ 3D-ГРАФИКИ
- •Аппаратно-независимые графические протоколы
- •Контрольные вопросы и упражнения
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
- •ИСТОЧНИКИ ИНТЕРНЕТ
83
5. ГЕОМЕТРИЧЕСКИЕ ПРЕОБРАЗОВАНИЯ
Вывод изображения на экран дисплея и разнообразные действия с ним, в том числе и визуальный анализ, требуют от пользователя известной геометрической грамотности. Геометрические понятия, формулы и факты, относящиеся прежде всего к плоскому и трехмерному случаям, играют в задачах компьютерной графики особую роль. Геометрические соображения, подходы и идеи в соединении с постоянно расширяющимися возможностями вычислительной техники являются неиссякаемым источником существенных продвижений на пути развития компьютерной графики, ее эффективного использования в научных и иных исследованиях. Порой даже самые простые геометрические методики обеспечивают заметные продвижения на отдельных этапах решения большой графической задачи.
5.1. Преобразования на плоскости и в пространстве
Для решения таких задач, как движение объектов и их частей, управления камерой применяются аффинные преобразования (АП), рассмотрим их основные свойства:
1)точки, лежащие на одной прямой, после преобразования лежат на одной прямой;
2)пересекающиеся прямые остаются пересекающимися, а параллельные – параллельными;
3)при АП пространства пересекающиеся плоскости остаются пересекающимися, параллельные – параллельными, а скрещивающиеся – скрещивающимися;
4)при АП сохраняются отношения площадей двух квадратов на плоскости и отношение объемов двух кубов в пространстве.
Аффинные преобразования на плоскости
Допустим, на плоскости задана прямолинейная координатная система. Тогда каждой точке М соответствует упорядоченная пара чисел (х, у) ее координат (рис. 5.1). Вводя на плоскости еще одну прямолинейную систему координат, мы ставим в соответствие той же точке М другую пару чисел – (х*, у*).
Переход от одной прямолинейной координатной системы на плоскости к другой описывается следующими соотношениями:
x* =αx + β y +λ,
(1)
y* =γ x +δ y + µ,

84
где α, β, λ, γ, µ, δ – произвольные числа, связанные неравенством
α β ≠ 0.
γδ
Формулы (1) можно рассматривать двояко: либо сохраняется точка и изменяется координатная система (рис. 5.2) (в этом случае произвольная точка М остается той же, изменяются лишь ее координаты), либо изменяется точка и сохраняется координатная система (рис. 5.3) (в этом случае формулы (1) задают отображение, переводящее произвольную точку M(x,y) в точку М*(х*, у*), координаты которой определены в той же координатной системе).
y |
|
|
y |
|
y* |
x* |
y |
|
|
|
|
||||
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
M(x,y) |
|
|
|
|
M |
|
|
|
M* |
|
|
||
|
|
x |
|
|
|
|
0* |
|
|
|
|
M |
x |
||
|
|
|
|
|
|
x |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
0 |
|
|
|
|
0 |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
||||||
Рис. 5.1. Исходные |
Рис. 5.2. Преобразова- |
Рис. 5.3. Преобразова- |
|||||||||||||
|
|
данные |
ние системы координат |
|
|
|
ние точки |
|
|
Вдальнейшем мы будем рассматривать формулы (1) как правило, согласно которому в заданной системе прямолинейных координат преобразуются точки плоскости.
Ваффинных преобразованиях плоскости особую роль играют несколько важных частных случаев, имеющих хорошо прослеживаемые геометрические характеристики. При исследовании геометрического смысла числовых коэффициентов в формулах (1) для этих случаев удобно считать, что заданная система координат является прямоугольной декартовой.
1.Поворот вокруг начальной точки на угол ϕ описывается формулами
x* = xcosϕ − ysinϕ,
y* = xsinϕ + y cosϕ.
2.Растяжение (сжатие) вдоль координатных осей можно задать так:
x* =αx, y* =δ y, α > 0, δ > 0.
Растяжение вдоль оси абсцисс обеспечивается при условии, что α > 1, а сжатие – при 0 < α < 1.
85
3.Отражение (относительно оси абсцисс) задается при помощи
формул
x* = x, y* = −y .
4.Параллельный перенос обеспечивают соотношения
x* = x +λ, y* = y + µ.
Выбор этих четырех частных случаев определяется двумя обстоятельствами.
1.Каждое из приведенных выше преобразований имеет простой и наглядный геометрический смысл (геометрическим смыслом наделены и постоянные числа, входящие в приведенные формулы).
2.Как доказывается в курсе аналитической геометрии, любое преобразование вида (1) всегда можно представить как по-
следовательное исполнение простейших преобразований. Для эффективного использования этих известных формул в за-
дачах компьютерной графики более удобной является их матричная запись. Матрицы, соответствующие случаям А, Б и В, строятся легко и имеют соответственно следующий вид:
cosϕ |
sinϕ |
, |
α |
0 |
|
, |
1 |
0 |
||
|
−sinϕ |
|
|
0 |
δ |
|
|
. |
||
|
cosϕ |
|
|
|
|
0 |
−1 |
Однако для решения рассматриваемых далее задач весьма желательно охватить матричным подходом все четыре простейших преобразования (в том числе и перенос), а значит, и общее аффинное преобразование. Этого можно достичь, например, так: перейти к описанию произвольной точки плоскости, не упорядоченной парой чисел, как это было сделано выше, а упорядоченной тройкой чисел.
Однородные координаты точки
Пусть М – произвольная точка плоскости с координатами х и у, вычисленными относительно заданной прямолинейной координатной системы. Однородными координатами этой точки называется любая тройка одновременно неравных нулю чисел x1, x2, x3, связанных с заданными числами x и y следующими соотношениями:
x1 / x3 = x, x2 / x3 = y .

86
При решении задач компьютерной графики однородные координаты обычно вводятся так: произвольной точке М(х, у) плоскости ставится в соответствие точка М*(х, у, 1) в пространстве (рис. 5.4).
Заметим, что произвольная точка на прямой, соединяющей начало координат, точку O(0, 0, 0) с точкой M*(х, у, 1), может быть задана тройкой чисел вида (hx, hy, h).
z |
|
y |
M*(x,y,1) |
1 |
|
|
M(x,y) |
0 |
x |
Рис. 5.4. Однородные координаты
Будем считать, что h≠0. Вектор с координатами hx, hy, h является направляющим вектором прямой, соединяющей точки 0(0, 0, 0) и М*(х, у, 1). Эта прямая пересекает плоскость z = 1 в точке (х, у, 1), которая однозначно определяет точку (х, у) координатной плоскости ху.
Тем самым между произвольной точкой с координатами (х, у) и множеством троек чисел вида (hx, hy, h) при h≠0 устанавливается (взаимно однозначное) соответствие, позволяющее считать числа hx, hy, h новыми координатами этой точки.
В проективной геометрии для однородных координат принято следующее обозначение: x : у : 1 или x1 : x2 : x3 (числа x1, x2, x3 одновременно в ноль не обращались).
Применение однородных координат оказывается удобным уже при решении простейших задач, например, масштабирования:
1)точку с однородными координатами (0.5; 0.1; 2.5) h=1 нельзя представить целыми координатами, но, например, при выборе h=10 получаем (5; 1; 25);
2)чтобы результаты преобразования не приводили к арифметическому переполнению, для точки с координатами
(80000;40000;1000) можно взять, например, h=0,001. В ре-
зультате получим (80;40;1).
Приведенные примеры показывают полезность использования однородных координат при проведении расчетов. Однако основной целью введения однородных координат в компьютерной графике является их несомненное удобство в применении к геометрическим преобразованиям.
87
При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное преобразование плоскости.
В самом деле, считая h = 1, сравним две записи: помеченную символом * и следующую, матричную:
|
α |
γ |
0 |
|
{x* y* 1} = {x y 1} |
|
β |
δ |
|
|
0 . |
|||
|
|
λ |
µ |
1 |
|
|
|
|
|
Нетрудно заметить, что после перемножения выражений, стоящих в правой части последнего соотношения, мы получим обе формулы (1) и верное числовое равенство 1 ≡ 1. Тем самым сравниваемые записи можно считать равносильными.
Элементы произвольной матрицы аффинного преобразования не несут в себе явно выраженного геометрического смысла. Поэтому, чтобы реализовать то или иное отображение, то есть найти элементы соответствующей матрицы по заданному геометрическому описанию, необходимы специальные приемы. Обычно построение этой матрицы в соответствии со сложностью рассматриваемой задачи разбивают на несколько этапов.
На каждом этапе находят матрицу, соответствующую тому или иному из выделенных выше случаев А, Б, В или Г, обладающих хорошо выраженными геометрическими свойствами.
Выпишем соответствующие матрицы третьего порядка.
А. Матрица вращения (rotation) |
Б. Матрица растяжения |
|||||||
cosϕ |
sinϕ |
0 |
(сжатия) (dilatation) |
|||||
|
|
|
cosϕ |
|
α |
0 |
0 |
|
[R] = −sinϕ |
0 . |
[D] = 0 |
δ |
0 . |
||||
|
0 |
|
0 |
|
1 |
|||
|
|
|
|
|
||||
|
|
|
|
|
|
0 |
||
|
|
|
|
|
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
Г. Матрица переноса (translation) |
В. Матрица отражения (re- |
|||||||
|
|
1 |
0 |
0 |
|
flection) |
|
|
[T ] = |
|
0 |
1 |
|
|
1 |
0 |
0 |
|
0 . |
|
[T ] = 0 |
−1 0 . |
||||
|
λ |
µ |
1 |
|
||||
|
|
|
|
|
||||
|
|
|
|
|
|
0 |
||
|
|
|
|
|
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
Рассмотрим примеры аффинных преобразований плоскости.

88
Пример 1. Построить матрицу поворота
вокруг точки А(a, b) на угол ϕ (рис. 5.5). |
|
|
y |
|
|
|
||||||
|
|
|
||||||||||
|
|
|
|
|
|
|
||||||
1-й |
шаг. |
Перенос |
на |
вектор |
А(-а, |
-b) |
для |
|
|
|
ϕ |
|
совмещения центра |
поворота |
с |
началом |
|
|
|
A |
|||||
|
|
|
x |
|||||||||
координат. |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
0 |
|
|
|
|||
2-й шаг. Поворот на угол ϕ. |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||||
A(a, |
b) |
|
Рис. 5.5. Поворот |
|||||||||
3-й |
шаг. |
Перенос |
на |
вектор |
для |
возвращения центра поворота в прежнее положение; матрица соответствующего преобразования.
|
1-й шаг |
|
|
|
|
2-й шаг |
|
|
|
3-й шаг |
|
||||||
|
|
1 |
0 |
0 |
|
|
cosϕ |
sinϕ |
0 |
|
|
|
|
1 |
0 |
0 |
|
[T |
] = |
0 |
1 |
0 |
; |
[R ] = −sinϕ |
cosϕ |
0 |
; |
[T |
] = |
|
0 |
1 |
0 . |
||
−A |
|
−a |
−b |
|
|
φ |
|
0 |
0 |
|
|
A |
|
|
|
|
|
|
|
1 |
|
|
|
1 |
|
|
|
a b |
1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Перемножим матрицы в том же порядке, как они выписаны: [T- A][Rϕ][TA]. В результате получим, что искомое преобразование (в матричной записи) будет выглядеть следующим образом:
|
|
sinϕ |
sinϕ |
0 |
|
{x* y* 1} = {x y 1}× |
|
−sinϕ |
cosϕ |
|
|
|
0 . |
||||
|
−a cosϕ +bsinϕ + a |
−asinϕ −bcosϕ +b |
1 |
|
|
|
|
|
|
|
|
Элементы полученной матрицы (особенно в последней строке) не так легко запомнить. В то же время каждая из трех перемножаемых матриц по геометрическому описанию соответствующего отображения легко строится.
Пример 2. Построить матрицу растяжения с коэффициентами растяжения α вдоль оси абсцисс и β вдоль оси ординат и с центром в точке А(а, b).
1-й шаг. Перенос на вектор А(-а, -b) для совмещения центра растяжения с началом координат.
2-й шаг. Растяжение вдоль координатных осей с коэффициентами α и β соответственно.
3-й шаг. Перенос на вектор А(а, b) для возвращения центра растяжения в прежнее положение; матрица соответствующего преобразования.