minhlapb Thành viên bậc 2
Tổng số bài gửi : 32 Points : 90 Reputation : 2 Join date : 22/07/2009
| Tiêu đề: ElippMidpoint Mon Nov 09, 2009 1:14 pm | |
| công thức các bạn tự chứng minh nge, thực ra mình cũng chưa chứng minh hehe !!! - Code:
-
void Graphics::Put4Pixel(int xc, int yc, int x, int y) { PutPixel(xc+x, yc+y); PutPixel(xc-x, yc+y); PutPixel(xc+x, yc-y); PutPixel(xc-x, yc-y); } void Graphics::ElippBresenham(int xc,int yc,int a,int b) { long x, y, px, py, rx2, ry2, p;
x = 0; y = b; rx2 = a * a; ry2 = b * b; px = 0; py = 2 * rx2 * y; Put4Pixel(xc, yc, x,y); p = Round(ry2-(rx2*b)+(0.25*rx2)); while (px < py) { x++; px += 2*ry2; if (p<0) p += ry2 + px; else { y--; py -= 2*rx2; p+= ry2 + px - py; } Put4Pixel(xc, yc, x, y); } p = Round(ry2*(x+0.5)*(x+0.5) + rx2*(y-1)*(y-1) - rx2*ry2); while (y>0) { y--; py -= rx2*2; if (p>0) p+=rx2-py; else { x++; px += ry2*2; p += rx2 - py + px; } Put4Pixel(xc, yc, x, y); } } Không biết làm sao nói được nhiều Như khi lòng chửa biết thương yêu, Khi yêu quên cả lời săn sóc, Nhìn lại nhìn nhau, chiều lại chiều. | |
|