- •Конспект лекцій
- •1. Машинная графика. Основные понятия 6
- •2 Преобразования в компьютерной графике 17
- •3. Технические средства мг 39
- •4. Трехмерная графика 55
- •Введение
- •1. Машинная графика. Основные понятия
- •1.1. Концептуальная модель машинной графики
- •1.2 Программирование
- •1.2.1 Координатные пространства
- •1.2.2 Текущее положение
- •1.2.3 Примитивы вывода и атрибуты.
- •1.2.4 Видовые операции
- •1.2.5 Относительные координаты
- •2 Преобразования в компьютерной графике
- •2.1 Общая архитектура графической системы
- •2.3 Геометрические преобразования
- •2.3.1 Основные математические операции
- •2.3.2 Двумерные преобразования
- •2.3.3 Однородные координаты и матричное представление двухмерных преобразований
- •2.3.4 Композиция двумерных преобразований.
- •2.3.5 Вопросы эффективности
- •2.4 Растровая развертка примитивов.
- •2.4.1 Развеpтка векторов. Тангенсный алгоритм
- •2.4.2 Алгоритм Брезенхема
- •2.4.3 Растровая развертка окружностей
- •2.4.4 Заполнение областей
- •2.4.5 Отсечение примитивов вывода
- •2.4.6 Отображение окна на поле вывода
- •3. Технические средства мг
- •3.1. Архитектура систем мг
- •3.2 Кадровое запоминающее устройство
- •3.3. Видеоконтроллеры
- •4. Трехмерная графика
- •4.1 Трехмерные координатные пространства. Матричное представление трехмерных преобразований
- •4.2 Изображения трехмерных объектов
- •4.3 Проекции
- •4.4 Представление пространственных форм
- •4.4.1 Представление поверхностей полигональной сеткой
- •4.4.2 Задание плоскости
- •4.4.3 Бикубические поверхности
- •4.5. Алгоритмы удаления скрытых линий и поверхностей
- •4.5.1 Трехмерное отсечение
- •4.5.2. Удаление скрытых линий и поверхностей
- •4.6. Алгоритмы фотореалистичной закраски
- •4.6.1 Модель освещения
- •4.6.2. Однотонная закраска
- •4.6.3 Закраска методом Гуро
- •4.6.4 Метод закраски Фонга
- •4.6.5 Определение нормалей к поверхности, вершинам, ребрам
- •4.6.6 Определение вектора отражения
4.4.2 Задание плоскости
При работе с полигональными сетками и многоугольниками часто используется уравнение плоскости, в которой лежит многоугольник:
ax + by + cz + d = 0 (4.17)
Три точки, лежащие на плоскости описываются уравнениями:
(4.18)
В том случае, если точки Р, Р1, Р2, Р3 лежат на одной плоскости, должна выполняться система уравнений (4.17 - 4.18). Если эта система уравнений имеет решение, определитель, составленный из ее коэффициентов, должен быть равен 0:
(4.19)
Разлагая этот определитель на алгебраические дополнения по первой строке, получим:
(4.20)
Определители с учетом их знаков являются коэффициентами a,b,c,d уравнения (4.17) соответственно:
(4.21)
Рассмотрим еще один метод вычисления коэффициентов уравнения плоскости. Хотя это уравнение содержит 4 неизвестных коэффициента, его можно нормировать таким образом, чтобы d= 1. Следовательно, трех неколлинеарных точек будет достаточно для определения этих коэффициентов. Подстановка координат трех неколлинеарных точек в систему нормированных уравнений (4.18) дает:
или в матричной форме:
или
X*C= D
Решение этого уравнения дает значение коэффициентов плоскости:
│С│ = │X-1│ ● │D│ (4.22)
Еще один способ используется в том случае, если известен вектор нормали к плоскости, т.е.:
= ai + bj + ck
(4.23)
где i, j, k - единичные векторы осей x, y, z соответственно.
Теперь уравнение плоскости примет вид:
ax + by + cz + d = 0
Величина d вычисляется с помощью произвольной точки на плоскости. Например, если координаты этой точки x1, y1, z1 , то
d = - (ax1 + by1 + cz1) (4.24)
Поскольку очень часто в различных алгоритмах объем вычислений растет с увеличением числа многоугольников, для описания поверхностей выгодно использовать многоугольники более чем с тремя сторонами. Эти многоугольники могут быть как невыпуклыми так и неплоскими.
Мартин Ньюэл предложил способ, который позволяет найти как точное решение для плоских многоугольников, так и "наилучшее" приближение для неплоских. Этот метод эквивалентен определению нормали к каждой вершине многоугольника посредством векторного произведения прилежащих ребер и усреднения результатов. Если a, b, c, d коэффициенты уравнения плоскости, то:
(4.25)
где n - число вершин многоугольника;
если i = n, тогда j= 1, иначе j = i + 1, а значение d вычисляется с помощью любой точки на плоскости.
4.4.3 Бикубические поверхности
Описание кривых осуществляется бикубическими уравнениями (полиномы третьей степени в параметрической форме):
(4.26)
Широко используются три способа описания параметрических кубических кривых. Метод Эрмита, в котором задаются положения конечных точек кривой и касательные векторы в них. Метод Безье, в котором задается положение конечных точек кривой, а для неявного задания касательных используются две другие точки, обычно лежащие не на кривой. Метод В-сплайнов, при котором конечные точки лежат не на кривой, в результате чего как первая, так и вторая производные оказываются непрерывными на концах сегмента.
Примечание: Термин "В-сплайн" происходит от длинной тонкой металлической рейки, с помощью которых чертежники размечают поверхность самолетов и кораблей. Металлические сплайны, если они не сильно напряжены, также обладают непрерывностью второго порядка.
Рассмотрим аппроксимацию кривых с использованием В-сплайнов. При интерполяции В-сплайнами характерны два основных момента:
1. В общем случае кривая не проходит точно через заданные точки, она только использует их для формирования гладкой кривой. Чем ближе друг к другу расположены заданные точки, тем лучше будет аппроксимация, поэтому, если полученная кривая В-сплайна не очень хороша, ее можно улучшить заданием большего количества точек.
2. Самая первая и самая последняя точки не включаются в состав кривой. Отсюда следует, что для В-сплайна необходимо задавать по крайней мере 4 точки А,В,С,D. В этом случае результирующая кривая будет располагаться примерно между точками В и С. Хотя точки А и D не охватываются, они влияют на формируемую кривую, так что их нельзя опускать.
Если N - количество интервалов между двумя последовательными заданными точками, то для m заданных точек выходной файл будет содержать k точек:
k = (m - 3) N + 1 (4.27)
Количество сегментов кривой будет составлять (m - 3) и, соответственно, будет существовать ( m - 3) кубических уравнений (4.24).
В каждом сегменте кривой, лежащем между точками i и (i + 1), переменная t изменяется от 0 до 1, т.е. при t = 0 имеем конечную точку сегмента вблизи точки i, а при t = 1 производится аппроксимация точки (i + 1).
Рис. 4.9 В - сплайн
Для каждого
сегмента кривой между точкой i и
точкой (i + 1) можно вычислить
коэффициенты
( j = 0,1,2,3 ) по значениям координат
четырех соседних точек, а именно точек
(i - 1), i, ( i + 1), (i + 2). Последующие
выражения для вычисления коэффициентов
В-сплайна приводятся без выводов:
Бикубические поверхности задаются кубическими уравнениями от двух переменных s и t. Изменяя оба параметра от 0 до 1 можно определить все точки на куске поверхности. Уравнение для (s,t x) :
