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
}
}
14 trang |
Chia sẻ: maiphuongtl | Lượt xem: 5670 | Lượt tải: 1
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:
- bresenham_line_7313.ppt