Bài giảng Đồ họa máy tính: Thuật toán vẽ đường thẳng Bresenham có nội dung giới thiệu về thuật toán Bresenham, cài đặt thuật toán cho đường tròn tâm và đường elip tâm, chương trình thuật toán và bài tập. Tham khảo nội dung bài giảng để hiểu rõ hơn về các nội dung trên.
Thuật toán vẽ đường thẳng Bresenham Mối tương quan X & Y độ lớn hệ số góc nhỏ Dy Dx x tăng y giữ nguyên hay tăng Đ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 tốn Bresenham Giới thiệu: • Giả sử đường cong xấp xỉ thành điểm (xi,yi) Các điểm có tọa độ nguyên hiển thị hình • Bài tốn đặt biết tọa độ (x i,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 00,Dx>Dy 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 hồn chỉnh 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 (x != x2) 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 tốn Bresenham cho: • Đường trịn tâm (xc,yc) bán kính R: (x-xc)2 + (y-yc)2 = R2 • Đường elip tâm (xc,yc) bán kính dài a, rộng b: (x-xc)2 / a2 + (y-yc)2 / b2 = 15 ... tăng Đ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 tốn Bresenham Giới thiệu: • Giả sử đường cong xấp xỉ thành... color); } } else {// đổi vai trò x y … } } 14 Bài tập Cài đặt thuật tốn Bresenham cho: • Đường trịn tâm (xc,yc) bán kính R: (x-xc)2 + (y-yc)2 = R2 • Đường elip tâm (xc,yc) bán kính dài a, rộng... thị hình • Bài toán đặt biết tọa độ (x i,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