Интерактивная Компьютерная Графика Часть 1 -3 (растеризация)
Растеризация отрезка Требования Факт Концы должны находиться в заданных точках Концы попадают только в пиксели (неоднозначность) Отрезки должны выглядеть как прямые Только для вертикального и горизонтального случаев Яркость не должна меняться вдоль отрезка Расстояние до пикселей в каждой точке отрезка различно, т. е. яркость - непостоянна
Растеризации отрезка: алгоритм № 1 ü Простейший алгоритм DDA-линии DDA – Digital Differential Analyzer (цифровой дифференциальный анализатор) /* вычислительное устройство, применявшееся ранее для генерации векторов */ начало отрезка (вещественное и пиксельное) конец отрезка (вещественное и пиксельное)
Растеризации отрезка: алгоритм № 2 ü Алгоритм Брезенхэма ( Bresenham's line algorithm )
Растеризации отрезка: алгоритм № 2 ü Алгоритм Брезенхэма
Растеризации отрезка: алгоритм № 3 ü Алгоритм Ву (Xiaolin Wu ), Анти. Алиасинг
Растеризация окружности: алгоритмы
Заливка многоугольника: алгоритм № 1 ü Угловой и по площади Точка внутри: Az. D + Bz. A + Cz. B + Dz. C = 360° B C z A D Алгоритм основан на том, что суммарный угол точки с вершинами равен 360° если точка расположена внутри многоугольника Алгоритм основан на том, что сумма всех треугольников равна площади фигуры
Заливка многоугольника: алгоритм № 1 ü Угловой B C Ay. D + By. A + Cy. B + Dy. C != 360° т. к. Dy. C>180°, т. е. Dy. C<0° y A D
Заливка многоугольника: алгоритм № 2 ü Построчный Алгоритм основан на том, что соседние пиксели в строке скорее всего одинаковы и меняются только там где строка пересекается с ребром многоугольника
Заливка области: алгоритм № 1 1. 2. 3. 4. Выбираем пиксель Находим всех его соседей и заносим в стек Закрашиваем пиксель Повторяем алгоритм для каждого из пикселей в стеке A B C D E F G H K L M Стек 1 2 B 2 3 B 3 C 3 D 3 G 3 H 3 4 B 4 C 4 D 4 F 4 G 4 H 4 K 4 5 6 7 8 D 2 C 5 D 5 E 5 F 5 G 5 H 5 K 5 L 5 D 6 E 6 F 6 C 7 D 7 E 7 H 6 K 6 L 6 G 7 H 7 K 7 G 4 H 4 G 5 H 5 G 7 H 7 K 7 H 6 K 6 L 6 K 5 Варианты связности: Ø по 4 соседа Ø по 8 соседей
Заливка области: алгоритм № 2 ü С затравкой сериями Алгоритм основан на том, что из начального пикселя закрашиваем серию, поднимаемся выше/ниже и пытаемся построить такую же серию, запоминая в стеке координаты разрывов K H G B M A C D E F Стек M K H G F E D C B A
Результат растеризации