Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 1 Растровая графика URL:
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 2 Примитивы Точки Линии Прямоугольники (со сторонами, параллельными границам экрана) Многоугольники Шрифты Заливка областей Плоское отсечение
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 3 Line x y (x1,y1) (x2,y2)
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 4 Line: Digital Differential Analyzer (DDA) (x,y)x2-x1 y2-y1 slope
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 5 Line: Алгоритм Брезенхема (метод центральной точки) x y (x1,y1) (x2,y2) (x,y) точка (x,y) «ниже» прямой точка (x,y) «лежит» на прямой точка (x,y) «выше» прямой
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 6 Line: Алгоритм Брезенхема (метод центральной точки) P(x,y) M(x+1,y+ 1 / 2 ) f(x,y) Подставляем точку M в функцию f: если f(M) > 0 выбираем точку NЕ если f(M)
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 7 Line: Алгоритм Брезенхема (метод центральной точки) P(x,y) M E (x+2,y+ 1 / 2 ) f(x,y) Подставляем точку M в функцию f: если f(M) > 0 выбираем точку NЕ если f(M)
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 8 Line: Алгоритм Брезенхема (метод центральной точки) P1(x1,y1) M 0 (x+1,y+ 1 / 2 ) f(x,y) Известны приращения f. Найдем первоначальное значение для точки (x1,y1)
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 9 Line: Алгоритм Брезенхема (метод центральной точки) Сохранились вещественные числа. Сделаем замену: 2f = e Тогда помеченные строки изменяться на: e = 2 * dy - dx; e > 0 e = e + 2 * dy - 2 *dx; e = e + 2 * dy и e – целое число.
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 10 Line: Алгоритм Брезенхема (метод центральной точки)
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 11 Line: Алгоритм с использованием Fixed Point (DDA) Fixed Point – вещественные числа с фиксированной точкой. Рассмотрим 4-байтное целое: 2b целая часть2b дробная часть Точность 1 / Если x и y fixed point, то сложение не изменяется (x+y) вычитание не изменяется (x-y) целая часть – «двоичный сдвиг» вправо на 16 бит (x >> 16) из целого: x = a
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 12 Circle x y R
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 13 Circle: Алгоритм Брезенхема (метод центральной точки) x y (0,R) x= 0 выбираем точку SЕ если f(M) < 0 выбираем точку Е
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 14 Circle: Алгоритм Брезенхема (метод центральной точки) P(x,y) M E SE M SE MEME f(x,y) Изменения значения f(M) при переходе к новым точкам (E или SE):
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 15 Circle: Алгоритм Брезенхема (метод центральной точки) P(0,R) M 0 (1,R- 1 / 2 ) f(x,y) SE E Определили приращения f. Найдем первоначальное значение для точки (x1,y1) Все приращения - целые. Сравнение f с 0 строгое:
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 16 Circle: Алгоритм Брезенхема (метод центральной точки) Дополнительная оптимизация: Просчитаем изменение приращений по направлениям E и SE ( incrE=2*x+3 и incrSE=2*(x-y)+5 ) для избавления от доступа к переменным. Если выбрана точка E, то x увеличивается на 1 и: incrE=incrE+2 и incrSE=incrSE+2 Если выбрана точка SE, то x увеличивается на 1, y уменьшается на 1 и: incrE=incrE+2 и incrSE=incrSE+4 Изначальные значения: incrE=3 и incrSE=5-2*R
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 17 Circle: Алгоритм Брезенхема (метод центральной точки)
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 18 Polygon
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 19 Flood Fill
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 20 Flood Fill
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 21 Text Шрифты РастровыеВекторныеКонтурные
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 22 Text 0x3C 0x46 0x86 0xFE 0x86 0x00 Справа показана битовая кодировка каждой строки (в шестнадцатеричном виде)
Raster Галинский В.А. Физико-математический лицей 30 Computer Graphics Support Group 23 Упражнение –Рекомендуется реализовать растровые алгоритмы с помощью программы из первого упражнения. Растровые шрифты необходимо загружать из файла.