Selasa, 22 Oktober 2013

Grafika Komputer Output Primitive : Lingkaran Midpoint Circle



Setelah sebelumnya membahasa algoritma DDA dan Bresenham, sekarang aku mau share  tentang algoritma midpoint circle untuk lingkaran dan ellips. 




















Persamaan Lingkaran
•   Lingkaran dapat digambarkan dengan menggunakan
persamaan koordinat rectangular tsb akan tetapi
pendekatan ini menimbulkan dua masalah yaitu :
–  Persamaan tersebut mengandung perhitungan akar yang
operasinya memakan waktu.
–  Timbul gap yang cukup signifikan pada lingkaran ketika
digambarkan. 










Midpoint Circle Algorithm
•   Untuk mengatasi masalah yang timbul dari penerapan koordinat polar maupun rectangular, Bresenham menyusun suatu algoritma pembentukan lingkaran yang hanya menggunakan aritmetika integer. Secara prinsip algoritma ini sejenis dengan algoritma penggambaran garis yang disusun oleh orang yang sama.

•   Lingkaran merupakan objek yang simetris sehingga karakteristik ini dapat dimanfaatkan untuk mengurangi pekerjaan pada saat menggambar lingkaran. Lingkaran dibagi menjadi 8 oktan (lihat
gambar 3.x), misalkan kita menyusun algoritma untuk menggambarkan lingkaran di oktan pertama, maka koordinat untuk 7 oktan selanjutnya dapat ditentukan.

 


 Midpoint Circle Algorithm
 















Langkah-langkah mengerjakan algortima midpoint circle
1. Input jari-jari (r) dan koordinar pusat lingkaran (xc,yc), kemudian tentukan koordinat untuk titik  awal (xo,yo) = (x, r)
2. Hitung nilai awal untuk parameter keputusan Po = 1 -  r
3. Untuk setiap xk, mulai dari k = 0, periksa/cek kondisi berikut :
  • Jika nilai pk < 0 maka, titik selanjutnya pada lingkaran dgn pusat (0,0) adalah                                   xk+1=x +1, nilai  y tetap; dan  pk+1 = pk + 2.x + 1
Selain itu berarti,
  •  pk > 0 maka, titik selanjutnya adalah xk+1 = x + 1, yk+1 = y - 1; dan  pk+1 = pk + 2x - 2y + 1
4. Ulangi langkah 3 sampai 4, hentikan perhitungan ketika x  > atau =  y


Contoh 1 :

















x^2 + y^2 = 100
Dari mana y = 10 ?  liat tabel pada plot awal (x,y)=(x,r) = (0,10)
ternyata 100 apabila di akar kan, maka hasilnya sama dengan 10
Po = 1 -  r  = 1 - 10 = -9
jadi, skrng jari-jarinya sudah diketahui = 10  dan  2x = 0,  2y = 20 , pk = -9

Nah..  tinggal menghitung k, dimulai dari k=0, sampai  batas yang di tentukan (x  > atau =  y).
Liat Algoritma midpoint circle dan Perhatikan Langkah-langkah mengerjakan algortima midpoint circle!
k=0
pk = 1 - r = 1 - 10 = -9
periksa pk,  pk < 0 maka,
xk+1 = 0 + 1 = 1 , nilai  10 tetap;
pk+1 = pk + 2.x + 1
         = -9  + 2 .1 + 1 =  -6
2x = 2
2y = 20

k=1
periksa pk,  pk < 0 maka,
xk+1 = 1 + 1 = 2 , nilai  10 tetap;
pk+1 = pk + 2.x + 1
         = -6 + 2 . 2 + 1 = -1
2x = 4
2y = 20

k=2
periksa pk,  pk < 0 maka,
xk+1 = 2 + 1 = 3 , nilai  10 tetap;
pk+1 = pk + 2.x + 1
         = -1 + 2 . 3 + 1 = 6
2x = 6
2y = 20

k=3
periksa pk,  pk > 0 maka,
xk+1 = 3 + 1 = 4, yk+1 = 10 - 1 = 9
pk+1 = pk + 2x - 2y + 1 
         =  6 + 2 . 4 - 2 . 9 + 1 =  6 + 8 - 18 + 1 = -3
2x = 8
2y = 18

Lanjutkan sampai (x  > atau =  y), selesai.


Contoh 2 :
1.Diketahui titik pusat lingkaran (0,0) dan radius 8, perhitungan berdasarkan otktan dari kuadran

pertama dimana x = 0  hingga y = 0. Nilai parameter dapat ditentukan dengan Po = 1 - r (jari-jari).
Buatlah garis lingkaran dengan algoritma midpoint circle?

Penyelesaian :
koordinat titik pusat sama dengan kuadran pertama (x,y) = (x, r) = (0,8)
Po = 1 -  r
     = 1 - 8 =  -7


K
PK
( xk + 1, yk + 1)
-
-
0,8
0
-7
1,8
1
-4
2,8
2
1
3,8
3
-6
4,7
4
3
5,7
5
0
6,6

k=0
pk= 1 - r = 1 - 8 = -7
periksa pk,  pk < 0 maka,
xk = x + 1 = 0 + 1 = 1 , nilai y tetap  8 ;

k=1
periksa pk,  pk < 0 maka,
xk = x + 1 =  1 + 1 = 2 , nilai y tetap  8 ;
pk+1 = pk + 2.x + 1
         = -7 + 2 . 1 + 1 =  -4

k=2
periksa pk,  pk < 0 maka,
xk = x + 1 = 2 + 1 = 3 ,  nilai y tetap  8;
pk+1 = pk + 2.x + 1
         = - 4 + 2 . 2 + 1 =  1

k=3
periksa pk, pk > 0 maka,
xk = x + 1 = 3 + 1 = 4 ; yk = y - 1 = 8 - 1 = 7
pk+1 = pk + 2x - 2y + 1 
         =  1 +  2.3 - 2.7 + 1 = 1 + 6 - 14 + 1= -6
k=4
periksa pk, pk < 0 maka,
xk = x + 1 = 4 + 1 = 5 ,  nilai y tetap  7;
pk+1 = pk + 2.x + 1
         = - 6 + 2 . 4 + 1 =  3

k=5
periksa pk, pk > 0 maka,
xk = x + 1 = 5 + 1 = 6 ; yk = y - 1 = 7 - 1 = 6
pk+1 = pk + 2x - 2y + 1 
         =  1 +  2.5 - 2.6 + 1 = 1 + 10 - 12 + 1= 0

Proses di hentikan karena (x  > atau =  y).

Kode Program Lingkaran akan di suguhkan nanti.. Stay tuned!!


Latihan 
Dengan menggunakan midpoint circle algortihm, buat
lingkaran berdasarkan persamaan berikut ini :
–    x 2 + y 2 = 64
–    x 2 + y 2 = 49
          


Reaksi:

0 komentar:

Posting Komentar

WARNING !
Komentar anda tidak boleh mengandung unsur:
1.Penghinaan, Rasis dan Pelecehan
2.Spamming (Spam Comments)
3.Link Iklan, ads etc
Terima Kasih.


Jika ada request ato laporan tentang :
1.Request Software atau Tutorial
2.Bad Link & Re-active link (akibat broken link)
Silakan comment di bawah atau kirim pesan ke saya via facebook >> Akunku : Adhieresthenes Hier Banu Arfakhshad