- •Методы растрирования кривых второго порядка
- •1. Вывод окружности
- •1.1. Метод прямого вычисления координат
- •Void Circle_Pixel(int x0, int y0, int X, int y, int color); {
- •Void Circle (int x0, int y0, int r, int color) {
- •1.2. Алгоритм Брезенхема для вывода окружности
- •Var X,y,d:integer:
- •2. Вывод эллипса
- •2.1. Построение эллипса по неявной функции
- •2.2. Построение путем сжатия окружности
procedure
bres_circle(xc,yc,r:interger):
procedure
sim(x,y;integer);
begin
putpixel(x+xc,y+yc,White);
putpixel(x+xc,-y+yc,White);
putpixel(-x+xc,-y+yc,White);
putpixel(-x+xc,y+yc,White);
putpixel(y+xc,x+yc,White);
putpixel(y+xc,-x+yc,White);
putpixel(-y+xc,-x+yc,White);
putpixel(-y+xc,x+yc,White);
end;
begin
d:=3-2*y;
x:=0;
y:=r;
while(x
<= y) do
begin
sim(x,y);
if
d<0 then d:=d+4*x+6
else
begin
d:=d+4*(x-y)+10;
dec(y)
end;
inc(x)
end;
end;Var X,y,d:integer:
Трассировка алгоритма сведена в таблицу. Список пикселов выбранных алгоритмов состоит из (0,8), (1,8), (2,8), (3,7), (4,7), (5,6), (6,5), (7,4), (7,3), (8,2), (8,1), (8,0):
-
Plot
Δ i
11
12
x
y
-14
0
8
(0,8)
-11
-13
0
8
(1,8)
-6
-7
2
8
(2,8)
-12
3
3
7
(3,7)
-3
11
4
7
(4,7)
-3
7
5
6
(5,6)
1
5
6
5
(6,5)
9
-11
7
4
(7,4)
4
3
7
3
(7,3)
18
-7
8
2
(8,2)
17
19
8
1
(8,1)
18
17
8
0
(8,0)
Результаты работы пошагового алгоритма Брезенхема для генерации окружности:
|