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

  • titik tengah yang di uji berada di dalam sempadan bulatan
  • piksel pada baris imbasan yk lebih hampir dengan laluan sebenar
  • pilih piksel ( xk+1, yk )

Positif

  • titik tengah yang di uji berada di luar sempadan bulatan
  • piksel pada baris imbasan yk-1 lebih hampir dengan laluan sebenar
  • pilih piksel ( xk+1, yk-1 )

Algoritma bulatan titik tengah adalah seperti berikut :

  1. Input nilai jejari, r, serta pusat bulatan ( xc, yc ).  Tetapkan titik pertama di atas lilitan bulatan yang berpusat di asalan sebagai ( 0, r ).

  2. Kira nilai awal pemalar penentu sebagai :

                       p0  =  5/4  -  r

  1. 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

     

  2. Tentukan titik-titik simetri pada 7 oktan yang lain.

  3. Dapatkan kordinat sebenar titik yang akan diplotkan bagi bulatan berpusat di (xc, yc) iaitu (x + xc, y + yc)

  4. Ulang langkah 3 hingga 5 sehingga x > y.

Carta Alir Algoritma Bulatan Titik Tengah (Midpoint Circle Algorithm) :