Bài giảng môn đồ hoạ máy tính
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 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) { int x,y,p; x=0; y=r; p=3-2*r; while (x<=y) { put8pixel(xc,yc,x,y); if(p<0) p+ =4*x+6; else { p+ = 4*(x-y) +10; y--; } x++; }}
Các file đính kèm theo tài liệu này:
- Bài giảng môn đồ hoạ máy tính.pdf