Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Thuật toán vẽ đường tròn trong lập trình
Nội dung xem thử
Mô tả chi tiết
I.Thuật toán vẽ đường tròn
Phương trình đường tròn có dạng:
(x-xc)2 + (y-yc)2 = r2
Pt đường tròn có tâm ở gốc tọa độ:
x2+y2 =r2
Do tính đối xứng của đường tròn nên ta chỉ
cần vẽ cung ¼ hoặc 1/8
void put8pixel(int xc, int yc, int x, int y)
{
putpixel(x+xc, y+yc, color);
putpixel(y+xc, x+yc, color);
putpixel(y+xc, -x+yc, color);
putpixel(x+xc, -y+yc, color);
putpixel(-x+xc, -y+yc, color);
putpixel(-y+xc, -x+yc, color);
putpixel(-y+xc, x+yc, color);
putpixel(-x+xc, y+yc, color);
}
1.Thuật toán Bresenham
1
Giả sử tại bước i đã vẽ được điểm (xi,yi)
Điểm cần vẽ kế tiếp (xi+1, yi+1) là:
(xi +1, yi) hay (xi +1, yi -1)
Giá trị y thực sự thuộc đường tròn ứng với xi là:
y2 = r2 – (xi +1)2
Gọi d1 = yi2 – y2 = yi2 –r2 +(xi +1)2
d2= y2 - (yi -1)2 = r2 – (xi +1)2 – (yi -1)2
Pi = d1-d2 = yi2 – r2 +(xi +1)2 –r2 + (xi +1)2 +(yi-1)2
= 2(xi +1)2 + yi2 +(yi -1)2 -2r2
Pi+1 – pi = 2(xi+1 +1)2 + yi+12 + (yi+1 -1)2 – 2r2 – 2(xi +1)2
– yi2 – (yi -1)2 + 2r2
= 4xi + 6 + 2(yi+12 – yi2) -2(yi+1-yi)
Pi+1 = pi+4xi + 6 + 2(yi+12 – yi2) -2(yi+1-yi)
Vậy:
+ nếu pi < 0 thì yi+1 = yi, khi đó pi+1 = pi+4xi+6
+Nếu pi >= thì yi+1 = yi-1, khi đó pi+1 = pi + 4(xi-yi)+10
Giá trị pi tại điểm đầu tiên (x1,y1) = (0,r) là:
P1 = 2+r2+(r-1)2 – 2r2=3-2r
void CircleBres(int xc, int yc, int r)
2