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

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