20110919 computer graphics_galinsky_lecture02_raster
TRANSCRIPT
![Page 1: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/1.jpg)
1
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Растровая
графика
URL: http://www.school30.spb.ru/cgsg/cgc/
E-mail: [email protected]
![Page 2: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/2.jpg)
2
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Примитивы
• Точки
• Линии
• Прямоугольники (со сторонами, параллельными границам экрана)
• Многоугольники
• Шрифты
• Заливка областей
• Плоское отсечение
![Page 3: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/3.jpg)
3
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line
x
y
(x1,y1)
(x2,y2)
![Page 4: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/4.jpg)
4
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line: Digital Differential Analyzer (DDA)
(x,y) x2-x1
y2-y1
slope
![Page 5: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/5.jpg)
5
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line: Алгоритм Брезенхема (метод центральной точки)
x
y
(x1,y1)
(x2,y2)
(x,y)
0),(
0),(
0),(
)11(),(
0)11(
0)12()1()12()1(
12
1
12
1
yxf
yxf
yxf
dxydyxydxxdyyxf
dxydyxydxxdy
xxyyyyxx
yy
yy
xx
xx
точка (x,y) «ниже» прямой
точка (x,y) «лежит» на прямой
точка (x,y) «выше» прямой
![Page 6: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/6.jpg)
6
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line: Алгоритм Брезенхема (метод центральной точки)
P(x,y)
M(x+1,y+1/2)
f(x,y)Подставляем точку M в функцию f:• если f(M) > 0 выбираем точку NЕ• если f(M) <= 0 выбираем точку Е
E
NE
![Page 7: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/7.jpg)
7
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line: Алгоритм Брезенхема (метод центральной точки)
P(x,y)
ME(x+2,y+1/2)
f(x,y)Подставляем точку M в функцию f:• если f(M) > 0 выбираем точку NЕ• если f(M) <= 0 выбираем точку Е
Изменения значения f(M) при переходек новым точкам (E или NE):
E
NEMNE(x+2,y+3/2)
dxdyMfCdxydxdyxdy
CydxxdyyxfMf
dyMfCdxydxdyxdy
CydxxdyyxfMf
Cdxydxdyxdy
CydxxdyyxfMf
NE
E
)(232
)23()2()2
3,2()(
)(22
)21()2()2
1,2()(
2
)21()1()2
1,1()(
M
![Page 8: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/8.jpg)
8
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line: Алгоритм Брезенхема (метод центральной точки)
P1(x1,y1)
M0(x+1,y+1/2)
f(x,y)
Известны приращения f.
Найдем первоначальное значение для точки (x1,y1)
2
)11()211()11(
)211,11()( 0
dxdy
dxydyxydxxdy
yxfMf
![Page 9: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/9.jpg)
9
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line: Алгоритм Брезенхема (метод центральной точки)
Сохранились вещественные числа.
Сделаем замену: 2f = e
Тогда помеченные строки изменяться на:
e = 2 * dy - dx;
e > 0
e = e + 2 * dy - 2 *dx;
e = e + 2 * dy
и e – целое число.
![Page 10: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/10.jpg)
10
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line: Алгоритм Брезенхема (метод центральной точки)
![Page 11: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/11.jpg)
11
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Line: Алгоритм с использованием Fixed Point (DDA)
Fixed Point – вещественные числа с фиксированной точкой.
Рассмотрим 4-байтное целое:
2b целая часть 2b дробная часть
Точность 1/65536
Если x и y fixed point, то
• сложение не изменяется (x+y)
• вычитание не изменяется (x-y)
• целая часть – «двоичный сдвиг» вправо на 16 бит (x >> 16)
• из целого: x = a << 16
![Page 12: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/12.jpg)
12
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Circle
x
y
R
![Page 13: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/13.jpg)
13
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Circle: Алгоритм Брезенхема (метод центральной точки)
x
y
(0,R) x<=y
222),( Ryxyxf
P(x,y)
M(x+1,y-1/2)
f(x,y)
SE
E
0),(
0),(
0),(
yxf
yxf
yxf точка (x,y) вне круга
точка (x,y) на окружности
точка (x,y) внутри круга
Подставляем точку M в функцию f:• если f(M) >= 0 выбираем точку SЕ• если f(M) < 0 выбираем точку Е
![Page 14: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/14.jpg)
14
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Circle: Алгоритм Брезенхема (метод центральной точки)
P(x,y)
M
E
SE MSE
MEf(x,y)
Изменения значения f(M) при переходек новым точкам (E или SE):
522)(49344
)23()2()2
3,2()(
32)(4144
)21()2()2
1,2()(
4112
)21()1()2
1,1()(
222
222
222
222
222
222
yxMfRyyxx
RyxyxfMf
xMfRyyxx
RyxyxfMf
Ryyxx
RyxyxfMf
NE
E
![Page 15: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/15.jpg)
15
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Circle: Алгоритм Брезенхема (метод центральной точки)
P(0,R)
M0(1,R-1/2)
f(x,y)
SE
E
Определили приращения f.Найдем первоначальное значение для точки (x1,y1)
RRRR
RRRfMf
45
411
)21(1)2
1,1()(
22
2220
Все приращения - целые. Сравнение f с 0 строгое: ‘<‘.Поэтому из первоначального f можно вычесть 1/4..
![Page 16: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/16.jpg)
16
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
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
![Page 17: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/17.jpg)
17
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Circle: Алгоритм Брезенхема (метод центральной точки)
![Page 18: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/18.jpg)
18
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Polygon
![Page 19: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/19.jpg)
19
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Flood Fill
![Page 20: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/20.jpg)
20
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Flood Fill
![Page 21: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/21.jpg)
21
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Text
Шрифты
Растровые Векторные Контурные
![Page 22: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/22.jpg)
22
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
Text
0x3C
0x46
0x86
0x86
0x86
0xFE
0x86
0x00
![Page 23: 20110919 computer graphics_galinsky_lecture02_raster](https://reader033.vdocuments.net/reader033/viewer/2022060117/5584cfefd8b42af8138b50e0/html5/thumbnails/23.jpg)
23
RasterRaster
Галинский В.А.Физико-математический лицей № 30
Computer Graphics Support Group
• Упражнение– Рекомендуется реализовать растровые алгоритмы
с помощью программы из первого упражнения. Растровые шрифты необходимо загружать из файла.