(+84) 236.3827111 ex. 402

Thuật toán Bresenham để vẽ đường tròn


· Bước 1:

- Chọn điểm đầu cần vẽ (x,y) = (0,R).

- Tính p đầu tiên: p = 3 - 2R.

- Vẽ 8 điểm ứng với (x,y).

· Bước 2:

- Tăng x lên 1 pixel: x = x + 1.

- Nếu p < 0: p = p + 4x + 6.

Ngược lại: p = p + 4(x - y) + 10 và y = y – 1.

- Vẽ điểm 8 điểm ứng với (x,y) mới.

· Bước 3: Lặp lại bước 2 cho đến khi x = y.

Sau đây là hàm cài đặt thuật toán:

void ve8diem(int x0,int y0,int x, int y, int color)

{

putpixel( x0 + x , y0 + y ,color);

putpixel( x0 - x , y0 + y ,color);

putpixel( x0 + x , y0 - y ,color);

putpixel( x0 - x , y0 - y ,color);

putpixel( x0 + y , y0 + x ,color);

putpixel( x0 - y , y0 + x ,color);

putpixel( x0 + y , y0 - x ,color);

putpixel( x0 - y , y0 - x ,color);

}

void circle(int x0,int y0,int r)

{

int x=0;int y=r;

int p=3-2*r;

while (x<=y)

{

ve8diem(x0,y0,x,y,15);

if(p<0) p=p+4*x+6;

else

{

p=p+4*(x-y)+10;

y=y-1;

}

x=x+1;

}

}