(+84) 236.3827111 ex. 402

Thuật toán MidPoint để vẽ đường tròn


Từ phương trình đường tròn: x2 + y2 = R2

Đặt F(x,y) = x2 + y2 - R2 ,ta có nhận xét:

< 0 nếu (x,y) ở trong đường tròn

F(x,y) = 0 nếu (x,y) ở trên đường tròn

> 0 nếu (x,y) ở ngoài đường tròn

Giả sử đã vẽ được điểm (xi,yi), điểm kế tiếp cần vẽ là P hoặc Q (Hình 1.6).

Gọi M là trung điểm của PQ ÞM(xi + 1,yi - ). Lúc này, việc chọn các điểm P hay Q được đưa về việc xét dấu của:

pi = F(M) = F(xi + 1,yi - )

Ø Nếu pi < 0: M ở trong đường tròn Þđường tròn gần P hơn ÞChọn P.

Ø Ngược lại: Chọn Q.

Tương tự:

pi+1 = F(xi+1 + 1,yi+1 - )

Suy ra:

pi+1 - pi = F(xi+1 + 1,yi+1 - ) - F(xi + 1,yi - )

= [(xi+1+1)2 + (yi+1 - )2 - R2] - [(xi+1)2 + (yi - )2 - R2]

= [(xi+2)2 + (yi+1 - )2 - R2] - [(xi+1)2 + (yi - )2 - R2]

= 2xi + 3 + (yi+12 - yi2) - (yi+1 - yi)

hay

pi+1 = pi + 2xi + 3 + (yi+12 - yi2) - (yi+1 - yi) (*)

*Nhận xét:

Nếu pi < 0: Chọn điểm P hay chọn yi+1 = yi.

Từ (*) Þpi+1 = pi + 2xi + 3

Nếu pi ³0: Chọn điểm Q hay chọn yi+1 = yi - 1.

Từ (*) Þpi+1 = pi + 2(xi - yi) + 5

Với điểm đầu tiên (0,R), ta có:

p1 = F(x1 + 1,y1 - ) = F(1,R - ) = 1 + (R - )2 - R2

p1 = 1 - R