
- •2. Цвет в кг. Аддитивные и субтрактивные цвета. Системы rgb, cmyk.
- •8. Печатающие устройства. Разрешение устройств. Классификация и принцип действия принтеров. Матричный принтер. Струйный принтер. Лазерный принтер.
- •9. Графопостроители. Классификация. Планшетные графопостроители. Графопостроители с переметающимся носителем. Электростатические графопостроители.
- •Кнопки (Buttons)
- •Световое перо (Lightpen)
- •Планшеты (Tabletts)
- •2. Алгоритмы компьютерной графики (теоретический вопрос)
- •1. Генерация векторов. Целочисленный алгоритм Брезенхема.
- •2. Генерация окружностей. Алгоритм Брезенхема.
- •3. Методы устранения ступенчатости. Причини возникновения искажения изображения. Устранение ступенчатости полутонами.
- •4. Заполнение многоугольника. Алгоритм заполнения с затравкой.
- •0.5.1 Простой алгоритм заливки
- •0.5.2 Построчный алгоритм заливки с затравкой
- •0.7.1 Алгоритм Сазерленда-Ходгмана
- •0.7.2 Простой алгоритм отсечения многоугольника
- •0.7.3 Алгоритм отсечения многоугольника Вейлера-Азертона
- •0.2.1 Устройство глаза
- •14. Построение реалистических изображений. Простая модель освещения. Диффузное отражение.
- •15. Построение реалистических изображений. Простая модель освещения. Зеркальное отражение.
- •16. Построение реалистических изображений. Определение нормали к поверхности.
- •17. Построение реалистических изображений. Определение вектора отражения.
- •18. Построение реалистических изображений. Закраска методом Гуро.
- •19. Построение реалистических изображений. Закраска методом Фонга.
- •20. Построение реалистических трехмерных изображений. Удаление невидимых линий и поверхностей.
- •4. Современное программирование трехмерной графики в OpenGl (теоретический вопрос).
- •1. Инициализация пакета OpenGl:
- •2. Описание вершин: определение координат и цвета вершин, вывод точек (настройка режимов вывода).
2. Генерация окружностей. Алгоритм Брезенхема.
Существует несколько очень простых, но не эффективных способов преобразования окружностей в растровую форму. Например, рассмотрим для простоты окружность с центром в начале координат. Ее уравнение записывается как x2 + y2 = R2. Решая это уравнение относительно y, получим
y
= ±
Чтобы изобразить четвертую часть окружности будем изменять x с единичным шагом от 0 до R и на каждом шаге вычислять y. Вторым простым методом растровой развертки окружности является использование вычислений x и y по формулам x = R cos α, y = R sin α, при пошаговом изменении угла α от 00 до 900.
Для упрощения алгоритма растровой развёртки стандартной окружности можно воспользоваться её симметрией относительно координатных осей и прямых y = ± x в случае, когда центр окружности не совпадает с началом координат, эти прямые необходимо сдвинуть параллельно так, чтобы они прошли через центр окружности. Тем самым достаточно построить растровое представление для 1/8 части окружности, а все оставшиеся точки получить симметрией (рис. 2.5).
Рис. 2.1 Восьмисторонняя симметрия
Рассмотрим участок
окружности из второго октанта x
Є [0, R/
].
Далее опишем алгоритм Брезенхейма
для этого участка окружности.
На каждом шаге алгоритм выбирает точку Pi (xi, yi), которая является ближайшей к истинной окружности. Идея алгоритма заключается в выборе ближайшей точки при помощи управляющих переменных, значения которых можно вычислить в пошаговом режиме с использованием небольшого числа сложений, вычитаний и сдвигов.
Рассмотрим небольшой участок сетки пикселов, а также возможные способы (от A до E) прохождения истинной окружности через сетку (Рис. 2.6).
Предположим, что точка Pi-1 была выбрана как ближайшая к окружности при x = xi-1. Теперь найдем, какая из точек Si или Ti расположена ближе к окружности при x = xi-1 + 1.
Рис. 2.2 Варианты прохождения окружности через растровую сетку
Заметим, что ошибка при выборе точки Pi (xi, yi) была равна
D(Pi) = (xi2+ yi2) – R2.
Запишем выражение для ошибок, получаемых при выборе точки Si или Ti.
D(Si) = [(xi-1+ 1)2 + (yi-1)2] – R2
D(Ti) = [(xi-1+ 1)2 + (yi-1 – 1)2] – R2
Если | D(Si) | ≥ | D(Ti) |, то Ti ближе к реальной окружности, иначе выбирается Si.
Введем di = | D(Si) | – | D(Ti) |
Ti будет выбираться при di ≥ 0, в противном случае будет устанавливаться Si.
Опуская алгебраические преобразования, запишем di и di+1 для разных вариантов выбора точки Si или Ti.
D1 = 3 – 2 R
Если выбирается Si (когда di < 0), то di+1 = di + 4 xi-1 + 6
Если выбирается Ti (когда di ≥ 0), то di+1 = di + 4 (xi-1 – yi-1) + 10
3. Методы устранения ступенчатости. Причини возникновения искажения изображения. Устранение ступенчатости полутонами.
Выше было отмечено, что растровая генерация отрезков имеет следующие недостатки: неточное расположение начала и конца, ступенчатый вид отрезка, яркость зависит от наклона и длины.
Ясно, что первый недостаток не может быть устранен программным путем. Неравномерность яркости обычно не слишком заметна и может быть скомпенсирована очевидным образом, требующим, в общем случае, вещественной арифметики, но в связи с реально небольшим количеством различимых уровней яркости достаточно обойтись целочисленным приближением, причем очень грубым.
Наиболее заметно ухудшает качество изображения ступенчатость. Имеется следующие способы борьбы со ступенчатостью : увеличение пространственного разрешения за счет усовершенствования аппаратуры, трактовка пиксела не как точки, а как площадки конечного размера, яркость которой зависит от размера площади пиксела, занятой изображением отрезка, "размывание" резкой границы, за счет частичной подсветки пикселов, примыкающих к формируемому отрезку. Понятно, что при этом ухудшается пространственное разрешение изображения. В этом эвристическом методе интенсивность пикселя на ребре устанавливается пропорционально площади части пикселя находящегося внутри многоугольника.