Bài giảng Thuật toán vẽ đường thẳng Bresenham

Thuật toán (cont.)

d1 - d2 = (2y – 2yi – 1) là một số thực do chứa m

Xét pi = Dx (d1 - d2) = Dx (2y - 2yi - 1) = 2Dy xi - 2Dx yi + C

C = 2Dy + (2b - 1)Dx

Do dấu của pi và (d1-d2) giống nhau nên khi xét dấu của pi thì ta xác định được yi+1

Mặc khác, pi+1 – pi = (2Dy xi+1 - 2Dx yi+1 + C) - (2Dy xi - 2Dx yi + C) = 2Dy – 2Dx(yi+1 – yi)

Từ đây, ta suy ra cách tính pi+1 theo pi:

Nếu pi<0 thì yi+1=yi nên pi+1 = pi + 2Dy

Ngược lại thì yi+1=yi+1 nên pi+1 = pi + 2Dy – 2Dx

Giá trị p đầu tiên được tính tại (x1, y1) là p1 = 2Dy x1 -2Dx y1 + C = 2Dy – Dx

 

ppt15 trang | Chia sẻ: trungkhoi17 | Lượt xem: 800 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Thuật toán vẽ đường thẳng Bresenham, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Thuật toán vẽ đường thẳng Bresenham2Mối tương quan giữa X & Y khi độ lớn hệ số góc nhỏ hơn 1 x tăng 1 và y giữ nguyên hay tăng 1 Điều này bảo đảm cho đường thẳng liên tục Nếu độ lớn của hệ số góc lớn hơn 1, chúng ta đổi vai trò của x & yx được gọi là giá trị độc lập và y là giá trị phụ thuộcDxDy3Thuật toán BresenhamGiới thiệu:Giả sử đường cong được xấp xỉ thành các điểm lần lượt là (xi,yi). Các điểm này có tọa độ nguyên và được hiển thị trên màn hình.Bài toán đặt ra là nếu biết được tọa độ (xi,yi) của bước thứ i, thì điểm ở bước i+1 là (xi+1,yi+1) sẽ được xác định như thế nào. Trong trường hợp hệ số góc 0Dy>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 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 là a, rộng là b: (x-xc)2 / a2 + (y-yc)2 / b2 = 1

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

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