- •2. Цвет в кг. Аддитивные и субтрактивные цвета. Системы rgb, cmyk.
- •8. Печатающие устройства. Разрешение устройств. Классификация и принцип действия принтеров. Матричный принтер. Струйный принтер. Лазерный принтер.
- •9. Графопостроители. Классификация. Планшетные графопостроители. Графопостроители с переметающимся носителем. Электростатические графопостроители.
- •Кнопки (Buttons)
- •Световое перо (Lightpen)
- •Планшеты (Tabletts)
- •2. Алгоритмы компьютерной графики (теоретический вопрос)
- •1. Генерация векторов. Целочисленный алгоритм Брезенхема.
- •3. Методы устранения ступенчатости. Причини возникновения искажения изображения. Устранение ступенчатости полутонами.
- •2. Генерация окружностей. Алгоритм Брезенхема.
- •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. Описание вершин: определение координат и цвета вершин, вывод точек (настройка режимов вывода).
4. Заполнение многоугольника. Алгоритм заполнения с затравкой.
Задача заполнения многоугольников решается в два этапа:
1. Сначала проводится операция отсечения многоугольника;
2. Затем производится заполнение полученных многоугольников.
Этап отсечения необходим для определения реальных областей много-угольника, которые будут выведены на экран. Это необходимо если многоугольник больше или выходит за пределы экрана или окна вывода.
Рассмотрим, каким образом можно заполнить многоугольник, задаваемый замкнутой ломаной линией без самопересечений.
Простейший способ закраски многоугольника состоит в проверки принадлежности каждой точки этому многоугольнику. Более эффективные алгоритмы используют тот факт, что соседние пискелы, вероятно, имеют одинаковые характеристики (кроме пикселов граничных ребер). Это свойство называется пространственной когерентностью.
В случае с многоугольником когерентность пикселей определяется вдоль сканирующей строки. Сканирующие строки обычно изменяются от «верха» многоугольника до его «низа». Характеристики пикселов изменяются только, где ребро многоугольника пересекает строку. Эти пересечения делят сканирующую строку на области закрашенных и не закрашенных пикселов.
0.5.1 Простой алгоритм заливки
Заливка выполняется следующим образом:
определяется является ли пиксел граничным или уже закрашенным,
если нет, то пиксел перекрашивается, затем проверяются и если надо перекрашиваются 4 соседних пиксела.
Логика работы алгоритма следующая:
Поместить координаты затравки в стек
Пока стек не пуст
Извлечь координаты пиксела из стека.
Перекрасить пиксел.
Для всех четырех соседних пикселов проверить
является ли он граничным или уже перекрашен.
Если нет, то занести его координаты в стек.
0.5.2 Построчный алгоритм заливки с затравкой
Использует пространственную когерентность:
пикселы в строке меняются только на границах;
при перемещении к следующей строке размер заливаемой строки скорее всего или неизменен или меняется на 1 пиксел.
Таким образом, на каждый закрашиваемый фрагмент строки в стеке хранятся координаты только одного начального пиксела [], что приводит к существенному уменьшению размера стека.
Последовательность работы алгоритма для гранично определенной области следующая:
Координата затравки помещается в стек, затем до исчерпания стека выполняются пункты 2-4.
Координата очередной затравки извлекается из стека и выполняется максимально возможное закрашивание вправо и влево по строке с затравкой, т.е. пока не попадется граничный пиксел. Пусть это Хлев и Хправ, соответственно.
Анализируется строка ниже закрашиваемой в пределах от Хлев до Хправ и в ней находятся крайние правые пикселы всех незакрашенных фрагментов. Их координаты заносятся в стек.
То же самое проделывается для строки выше закрашиваемой.
5. Отсечение отрезков. Двумерный алгоритм Коэна-Сазерленда. Другие методы отсечения отрезков: двумерный алгоритм Кируса-Бека, алгоритм Сазерлспда-Ходгмана, алгоритм отсечения многоугольника Вейлера-Азертона. Трехмерное отсечение отрезков.
Алгоритм отсечения многоугольника должен в результате отсечения давать один или несколько замкнутых многоугольников .
