Mari Cuba Lukis Contoh dan Penyelesaian Soalan dan Penyelesaian (Input Pengguna)
| Algoritma Bulatan Titik Tengah (Midpoint Circle Algorithm) |
Persampelan dilakukan pada setiap unit bagi menentukan piksel yang paling hampir dengan laluan bulatan.
Pertimbangkan dulu satu bulatan yang berpusat di asalan. Pada sempadan bulatan di oktan pertama (bahagian di antara x = 0 hingga x = y), kecerunan garis tangen pada setiap titik di sempadan berubah dari 0 hingga 1. Memandangkan | m | < 1, persampelan dilakukan pada setiap unit x dan nilai y yang sempadan ditentukan.
Bagi bulatan dengan jejari r dan berpusat di ( xc, yc ), pengiraan akan dillakukan berdasarkan bulatan dengan jejari yang sama tetapi berpusat di asalan. Piksel yang akan diplotkan didapati dengan menambahkan nilai ( xc, yc ) kepada nilai yang didapati berdasarkan bulatan yang berpusat di asalan, iaitu :
|
Nilai bagi bulatan berpusat di (0,0) |
Nilai bagi bulatan berpusat di (xc,yc) |
|
( x, y ) |
( x + xc, y + yc ) |
Memandangkan persampelan dilakukan pada unit x dalam oktan pertama, nilai x akan sentiasa bertambah sebanyak 1 unit. Katakan piksel semasa adalah (xk, yk), piksel berikutnya yang akan diplotkan adalah sama ada (xk + 1, yk) atau (xk + 1, yk 1) seperti yang ditunjukkan di dalam rajah 3.5.

Rajah 3.5 : Titik tengah di antara 2 piksel yang terlibat pada kedudukan persampelan semasa dalam algoritma bulatan titik tengah.
Titik tengah di antara 2 piksel yang menjadi calon untuk diplot seterusnya akan diuji sama ada : ia berada di dalam atau di luar sempadan bulatan. Fungsi yang digunakan :
f
( x, y ) = x2 + y2 r2
Gantikan sebarang titik ( x, y ) :

Pemalar penentu digunakan diwakili pk, yang menguji titik tengah di antara 2 titik yang terlibat. (Titik tengah tersebut iaitu ( xk + 1, yk - ½ ))

Berdasarkan nilai yang diperolehi :
| pk |
Negatif |
|
|
Positif |
|
Algoritma bulatan titik tengah adalah seperti berikut :
Input nilai jejari, r, serta pusat bulatan ( xc, yc ). Tetapkan titik pertama di atas lilitan bulatan yang berpusat di asalan sebagai ( 0, r ).
Kira nilai awal pemalar penentu sebagai :
p0 = - r
Pada setiap xk, bermula pada k = 0, uji nilai pemalar penentu :
Jika pk < 0, titik seterusnya adalah ( xk + 1, yk ) dan
pk+1 = pk + 2xk+1 + 1,
Jika pk > 0, titik seterusnya adalah (xk+1, yk-1) dan
pk+1 = pk + 2x k+1 + 1 2yk+1
Tentukan titik-titik simetri pada 7 oktan yang lain.
Dapatkan kordinat sebenar titik yang akan diplotkan bagi bulatan berpusat di (xc, yc) iaitu (x + xc, y + yc)
Ulang langkah 3 hingga 5 sehingga x > y.
Carta Alir Algoritma Bulatan Titik Tengah (Midpoint Circle Algorithm) :