Trường đại học Thành Đô

Thứ Ba, 8 tháng 9, 2015

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;
  }
}

Unknown

About Unknown

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.

1 nhận xét:

Write nhận xét
Hd7
AUTHOR
lúc 06:42 9 tháng 10, 2018 delete

Bạn tăng x++, y-- sau là đúng rồi, một số trang trên mạng nhầm lẫn chỗ đó.

Reply
avatar