Chọn điểm bắt đầu để vẽ là điểm (0,R). • Dựa vào hình vẽ, nếu ( x i , yi ) là điểm nguyên đã tìm được ở bước thứ i, thì điểm (x i+1 , yi +1 ) ở bước thứ (i+1) là sự lựa chọn giữa S và P.
ĐỒ HỌA MÁY TÍNH • Chọn điểm bắt đầu để vẽ điểm (0,R) • Dựa vào hình vẽ, ( x i , yi ) điểm nguyên tìm bước thứ i, điểm (x i+1 , yi +1 ) bước thứ (i+1) lựa chọn S P x i +1 = x i + • Như : yi +1 ∈ {yi , yi − 1} Q(xi+1, y) yi S MidPoint yi-1 P xi xi+1 2 • Đặt F (x, y) = x + y − R , ta có : < 0, (x, y ) nằm đường tròn F (x, y)= 0, (x, y ) nằm đường tròn > 0, (x, y ) nằm đường tròn Dương Anh Đức, Lê Đình Duy Các thuật toán vẽ đường 16/22 ĐỒ HỌA MÁY TÍNH • 1 p = F MidPoint = F x + , y − ( ) i i i Xeùt Ta có : ♦ Nếu pi < , điểm MidPoint nằm đường tròn Lúc điểm thực Q gần S nên ta chọn S, tức yi+1 = yi ♦ Ngược lại, pi ≥ , điểm MidPoint nằm đường tròn Lúc điểm thực Q gần P nên ta chọn P, tức y i +1 = y i − • Mặt khác : 1 1 pi +1 − pi = F x i+1 + 1, yi +1 − − F x i + 1, y i − 2 2 ⇔ pi+1 2 1 1 2 − pi = (xi+1 + 1) + yi+1 − − R − (xi + 1) + yi − − R2 2 2 ( ) ⇔ pi+1 − pi = 2xi + + yi2+1 − yi2 − ( yi+1 − yi ) • Vaäy : • ♦ pi +1 = pi + x i + , neáu pi < ta choïn yi+1 = yi ♦ pi+1 = pi + x i − yi + , neáu pi ≥ y i +1 = y i − ta chọn p ứng với điểm ban đầu (x , y0 ) = (0, R ) 1 1 p0 = F x + 1, y0 − = F 1, R − = − R 2 2 Dương Anh Đức, Lê Đình Duy Các thuật toán vẽ đường 17/22 ĐỒ HỌA MÁY TÍNH Lưu đồ thuật toán MidPoint vẽ đường tròn Begin p=5/4-R; x=0; y=R; Put8Pixel(x, y, c); x