Bài giảng đồ họa máy tính thuật toán bresenham vẽ đường thẳng

15 505 1
Bài giảng đồ họa máy tính  thuật toán bresenham   vẽ đường thẳng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Thuật toán Bresenham vẽ đường thẳng Xét kDy Dx0,Dy|Dy| Kết hợp vùng • • x tăng Vùng y tăng vùng y giảm int dy = (Dy < 0) ? -1 : 1; Dy = abs(Dy); while (x < x2) { if (p < 0) { p += const1; } else { p += const2; y += dy; } x++; putpixel(x, y, color); } 10 Kết hợp vùng • • Vùng x tăng 1, vùng x giảm y tăng int dx = (Dx < 0) ? -1 : 1; Dx = abs(Dx); while (x != x2) { if (p < 0) { p += const1; } else { p += const2; y++; } x += dx; putpixel(x, y, color); } 11 Kết hợp vùng 1, 4, 5, • • x tăng Dx > 0, giảm Dx < y tăng Dy > 0, giảm Dy < int dx = (Dx < 0) ? -1 : 1; Dx = abs(Dx); int dy = (Dy < 0) ? -1 : 1; Dy = abs(Dy); while (x != x2) { if (p < 0) { p += const1; } else { p += const2; y += dy; } x += dx; putpixel(x, y, color); } 12 Kết hợp vùng 2, 3, 6, 7: x tính theo y • • y tăng Dy > 0, giảm Dy < x tăng Dx > 0, giảm Dx < int dx = (Dx < 0) ? -1 : 1; Dx = abs(Dx); int dy = (Dy < 0) ? -1 : 1; Dy = abs(Dy); while (y != y2) { if (p < 0) { p += const1; } else { p += const2; x += dx; } y += dy; putpixel(x, y, color); } 13 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; int dy = (Dy < 0) ? -1 : 1; Dx = abs(Dx); Dy = abs(Dy); putpixel(x, y, color); if (Dx > Dy) { int p = * Dy – Dx; int const1 = * Dy, const2 = * (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ò x y … } } 14 Bài tập Cài đặt thuật toán Bresenham vẽ hình sau 15 [...]... * 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 Bài tập Cài đặt thuật toán Bresenham vẽ hình sau 15 ... color); } 12 Kết hợp vùng 2, 3, 6, 7: x tính theo y • • y tăng 1 khi Dy > 0, giảm 1 khi Dy < 0 x tăng khi Dx > 0, giảm khi Dx < 0 int dx = (Dx < 0) ? -1 : 1; Dx = abs(Dx); int dy = (Dy < 0) ? -1 : 1; Dy = abs(Dy); while (y != y2) { if (p < 0) { p += const1; } else { p += const2; x += dx; } y += dy; putpixel(x, y, color); } 13 Chương trình hoàn chỉnh void BresenhamLine(int x1, int y1, int x2, int ... Điều bảo đảm cho đường thẳng liên tục Nếu độ lớn hệ số góc lớn 1, đổi vai trò x & y  x gọi giá trị độc lập y giá trị phụ thuộc Thuật toán Bresenham Giới thiệu: • Giả sử đường thẳng xấp xỉ thành... hình • Bài toán đặt biết tọa độ (xi,yi) bước thứ i, điểm bước i+1 (xi+1,yi+1) xác định • Trong trường hợp hệ số góc 0

Ngày đăng: 03/12/2015, 08:33

Mục lục

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

  • Thuật toán Bresenham (tiếp)

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

  • Kết hợp vùng 1 và 8

  • Kết hợp vùng 1 và 4

  • Kết hợp vùng 2, 3, 6, 7: x tính theo y

  • Chương trình hoàn chỉnh

Tài liệu cùng người dùng

Tài liệu liên quan