Thuật toán Midpoint

Một phần của tài liệu bài giảng Đồ họa máy tính (Trang 44 - 46)

rhuật toán MidPoint đưa ra cách chọn yi+ I là y, hay yi + 1 bằng cách so sánh điểm thực Q(Xj + 1 ,y) với điểm MidPoint là trung điểm của s và p.

Ta có:

- Nếu điềm Q nằm dưới điểm MidPoint, ta chọn s;

- Ngược lại, nếu điểm Q nằm trên điểm MidPoint ta chọn p.

Hình 2-19. Minh hoạ thuật toán MidPoint

Xét dạng tổng quát của phương trình đường thẳng dạng (1.3): Ax + By + c = 0

với A = Dy = y2 - y i,tí = - Dx = -(x2 - x ị), c = x2y i - Xiy2. Đặt F(x, y) = Ax + By + c, ta cỏ nhận xét:

<0 nếu (x, y) nằm phía trên đường thẳng F(x,y) < = 0 nếu (x, y) thuộc về đường thẳng

>0 nếu (x, y) nằm phía dưới đường thẳng

Lúc này việc chọn các điểm s, p ở trên được đưa về việc xét dấu của:

Pi = 2F(MidPoint) = 2I; X, +l,y, +

ĐỒ HOẠ MÁY TÍNH

- Nếu p, < 0, điểm MidPoint nằm phía trên đoạn thẳng; lúc này điểm thực Q nằm dưới điểm MidPoint, nên ta chọn s, tức là y, +1 = y,.

- Ngược lại, nếu Pi > 0, điểm MidPoint nằm phía dưới đoạn thẳng; lúc này điểm thực Q nằm trên điểm MidPoint, nên ta chọn p, tức làyj + 1=yi + 1.

Mặt khác, để tính Pi + 1 ở bước tiếp theo theo Pi ta xét biểu thức: Pi +1 - Pi Xi+l _ぃ |+丨+ 士 -2 F x 丨 +I, yi + 士 A-(X,+1+1)+B( n y 丨+1 + c - 2 、 2ソ A.(x, +1) + B( 1 〉 y,+ị + c V 2 ) = 2A + 2B(y1+l-y ,) = 2D y-2D x(y1+1 - y .) Vậy:

- Nếu Pi < 0, ta chọn + I = yi, suy ra: Pi + I = Pi + 2Dy

- Nếu p, > 0, ta chọn yi + 1= yi + 1 ,suy ra: Pi + ! = Pi + 2Dy - 2Dx

Ta tính giá trị Po ứng với điểm ban đầu (x〇, y〇), với nhận xét rằng, (x〇, y〇)là điểm thuộc về đoạn thẳng, tức là:

Ax〇+ By〇+ c = 0 ( 1) _ ( 1〉 Po=2F x0 +い 0 +T K ム) =2 A(x0 + 1)+ B y° +去 \ ム) + c = 2(Ax〇 + By〇 + C) + 2A + B = 2A + B = 2Dy - Dx

Nhận xét: Thuật toán MidPoint cho kết quả tương tự như thuật toán Bresenham.

2 - CÁC ĐỐI TƯỢNG ĐÔ HOA c ơ SỞ m

Một phần của tài liệu bài giảng Đồ họa máy tính (Trang 44 - 46)

Tải bản đầy đủ (PDF)

(183 trang)