Thuật toán Bresenham vẽ đường thẳng

Chương trình hoàn chỉnh 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 dx = (Dx < 0) ? -1 : 1; Dx = abs(Dx); int dy = (Dy < 0) ? -1 : 1; Dy = abs(Dy); putpixel(x, y, color); if (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 } }

ppt14 trang | Chia sẻ: maiphuongtl | Lượt xem: 5659 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu 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
* Thuật toán Bresenham vẽ đường thẳng * Xé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 p1 * Mở rộng 1 4 3 2 8 7 6 5 Dx>0,Dy>0,Dx>Dy Dx>0,Dy|Dy| Dx0,|Dx|>Dy Dx|Dy| * Kết hợp vùng 1 và 8 x tăng 1 Vù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 … } } * Bài tập Cài đặt thuật toán Bresenham vẽ hình sau

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

  • pptbresenham_line_7313.ppt
Tài liệu liên quan