Bài giảng Thuật toán Bresenham vẽ đường thẳng

Cài đặt thuật toán (với Dx>Dy>0)

void BresenhamLine(int x1, int y1, int x2, int y2, int color) {

 int Dx = x2 – x1, Dy = y2 – y1;

 int x = x1, y = y1;

 int p = 2 * Dy – Dx;

 int const1 = 2 * Dy, const2 = 2 * (Dy-Dx);

 putpixel(x, y, color);

 while (x < x2) {

 if (p < 0) {

 p += const1;

 } else {

 p += const2;

 y++;

 }

 x++;

 putpixel(x, y, color);

 }

}

ppt15 trang | Chia sẻ: trungkhoi17 | Lượt xem: 752 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Thuật toán Bresenham vẽ đường thẳng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Thuật toán Bresenham vẽ đường thẳng2Xét kDy>0)void BresenhamLine(int x1, int y1, int x2, int y2, int color) { int Dx = x2 – x1, Dy = y2 – y1; int x = x1, y = y1; int p = 2 * Dy – Dx; int const1 = 2 * Dy, const2 = 2 * (Dy-Dx); putpixel(x, y, color); while (x 0. Chú ý trường hợp pi = 0.Tính p1xiyiyi+1Pxi+1=xi+1Sd2d1(xi+1,y=f(xi+1))9Mở rộng14328765Dx>0,Dy>0,Dx>DyDx>0,Dy|Dy|Dx0,|Dx|>DyDx|Dy|10Kết hợp vùng 1 và 8x tăng 1Vùng 1 y tăng còn vùng 2 y giảm ... int dy = (Dy 0, giảm 1 khi Dx 0, giảm khi Dy 0, giảm 1 khi Dy 0, giảm khi Dx Dy) { int p = 2 * Dy – Dx; int const1 = 2 * Dy, const2 = 2 * (Dy-Dx); while (x != x2) { if (p < 0) { p += const1; } else { p += const2; y += dy; } x += dx; putpixel(x, y, color); } } else {// đổi vai trò giữa x và y }}15Bài tậpCài đặt thuật toán Bresenham vẽ hình sau

Các file đính kèm theo tài liệu này:

  • pptbai_giang_thuat_toan_bresenham_ve_duong_thang.ppt