
- •Предмет, цели и задачи компьютерной графики.
- •Исторические этапы развития компьютерной графики
- •Современные направления и виды компьютерной графики, типы изображений.
- •Устройства ввода
- •Мышь, трекбол, джойстик
- •Сенсорные панели
- •Устройства вывода (дисплеи), цветовые модели.
- •Системы координат в машинной графике.
- •Аффинные преобразования (перенос и масштабирование).
- •Аффинные преобразования (вращение).
- •Однородные координаты и матричное представление 2d-преобразований.
- •Матричное представление 3d-преобразований.
- •Проекции. Основные виды и их отличия.
- •Математический аппарат центральной перспективной проекции.
- •Проблема удаления невидимых линий и поверхностей. Обзор основных подходов и алгоритмов.
- •Удаление невидимых линий методом плавающего горизонта.
- •Алгоритм удаления невидимых поверхностей с использованием z-буфера.
- •Удаление невидимых линий на основе алгоритма Робертса.
- •Удаление невидимых поверхностей методом трассировки лучей.
- •Алгоритм удаления невидимых поверхностей Варнока.
- •Построчный алгоритм удаления невидимых поверхностей Уоткинса.
- •Алгоритмы списка приоритетов. Метод сортировки по глубине (Ньюэла – Ньюэла – Санча).
- •Алгоритм Вейлера – Азертона.
- •Алгоритм Галимберти – Монтанари.
- •Алгоритм генерации отрезков (симметричный цда).
- •Алгоритм генерации отрезков (простой цда).
- •Алгоритм Брезенхема для генерации отрезков.
- •Проблема растровой развертки окружностей.
- •Алгоритм Брезенхема для развертки окружностей.
- •Алгоритмы заливки областей на основе построчного сканирования.
- •Алгоритмы заливки областей на основе затравочного заполнения.
- •Основы фрактальной геометрии.
- •Алгоритмы отсечения. Постановка задачи.
- •Алгоритм отсечения Коэна-Сазерленда.
- •33.Синтез реалистических изображений. Расчет интенсивности при различных видах освещения.
- •Классификация источников освещения. Проблема расчета затухания интенсивности (радиальное, угловое).
- •Методы закраски Гуро и Фонга.
- •Моделирование глобального освещения методом трассировки лучей (прямая и обратная трассировки).
- •Распределенная трассировка лучей. Дефект алиайзинга и методы его устранения.
- •Методы оптимизации методов трассировки лучей. Основные характеристики и недостатки методов трассировки лучей.
- •Метод излучательности.
Алгоритм генерации отрезков (простой цда).
Общие требования к изображению отрезков:
Концы отрезков должны находиться в заданных точках
Отрезки должны выглядеть прямыми
Яркость вдоль отрезка должна быть постоянной и не зависеть от длины и наклона отрезка.
Концы отрезка расположены на пикселях лишь наиболее близких к требуемым позициям; только в частных случаях координаты концов отрезка будут совпадать с координатами пикселя.
Линия аппроксимируется набором пикселей и в итоге не имеет ничего общего с прямой линией. Только в частных случаях отрезок будет выглядеть прямым (строго вертикально ли строго горизонтально, в крайнем случае – под углом в 45 градусов).
Яркость страдает из-за того, что расстояние между пикселями неравномерное.
Ц ДА – цифровой дифференциальный анализатор.
Алгоритм позволяет растризовать отрезок, заданный двумя точками, используя при этом вычисления с вещественными числами (с плавающей точкой).
Простой ЦДА.
В данном алгоритме одно из приращений,
соответствующее более быстро меняющейся
координате, приравнивается к 1,
а приращение к другой координате
определяется как соотношение высот.
Например:
Алгоритм Брезенхема для генерации отрезков.
У
страняет
недостатки алгоритмов ЦДА, а так же
осуществляет приближение к идеальному
отрезку, выбирая на каждом шаге пиксель,
максимально приближенный к идеальной
прямой.
Для принятия решения о том, куда заносить очередной пиксель, вводится величина отклонения E – точная позиция идеальной линии от середины между двумя возможными растровыми точками в направлении наименьшей относительной координаты.
Значение Е используется как критерий для выбора ближайшей растровой точки. Если E<0, то значение y округляется до последнего меньшего целочисленного значения (т.е. не меняется по сравнению с предыдущей точкой). Иначе y++.
На каждом шаге значение более быстро меняющейся координаты увеличивается на 1, по другой координате либо меняется, либо неизменно. Критерием этого изменения координаты является минимум расстояния до идеального отрезка.
Пример кода на С:
int x, y, Px, Py; double E = (Py/Px) – 0.5;
for(int i = 1; i <= Px; i++)
{ plot(x, y); if(E > 0) {y++; E--;} x++; E = E + (Py/Px); }
Проблема растровой развертки окружностей.
О
кружность
– геометрическое место точек, удаленных
на заданное расстояние R
от центра (Xc,
Yc).
Для любой точки
(x,y)
взаимосвязь с этим расстоянием R
выражается через теорему Пифагора:
.
.
Недостаток:
большой объем вычислений, промежутки
между положениями изображаемых пикселей
будут неравновмерными.
Алгоритм Брезенхема для развертки окружностей.
При любом способе описания окружность можно сократить объем вычислений, если учесть симметрию окружности: ее форма одинакова во всех квадрантах, следовательно, если построить кривую в одном квадранте, с помощью аффинных преобразований можно получить всю окружность целиком. Так же можно использовать симметрию в октантах.
.
Алгоритм пошагово генерирует очередные
точки окружности, выбирая на каждом
шаге для занесения пикселя точку
,
ближе к идеальной окружности так, чтобы
.
Выбор ближайшей точки выполняется в помощью анализа значений управляющих переменных для вычисления которых не требуется вещественная арифметика. Для выбора очередной точки достаточно проанализировать знак
Dj = | (x + 1)2 + y2 - r2 |
Dd = | (x + 1)2 + (y + 1)2 - r2 |
Dv = | x2 + (y + 1)2 - r2 |
Выбирается та точка, для которой D минимальна.