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);
}
}
15 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 735 | Lượt tải: 0
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:
- bai_giang_thuat_toan_bresenham_ve_duong_thang.ppt