LINGKARAN Algoritma Pembentukan Lingkaran y Algoritma Pembentukan Lingkaran Persamaan umum lingkaran adalah: dimana r = radius lingkaran, sehingga: r x Lingkaran dapat dibuat dengan menggambarkan seperempat lingkaran, karena bagian lain dapat dibuat sebagai bagian yang simetris.
LINGKARAN A. Simetris Delapan Titik Proses pembuatan lingkaran dapat dilakukan dengan menentukan suatu titik awal (x,y) maka terdapat titik di posisi lain, sehingga diperoleh delapan titik. Dengan demikian sebenarnya hanya diperlukan untuk menghitung segmen 45 dalam menentukan lingkaran selengkapnya. Dengan titik pusat lingkaran yang tertentu, delapan titik simetris dapat ditampilkan dengan procedure CirclePoint sebagai berikut: void CirclePoint(int x, int y, int value) { SetPixel(x,y,value); SetPixel(-x,y,value); SetPixel(x,-y,value); SetPixel(-x,-y,value); SetPixel(y,x,value); SetPixel(-y,x,value); SetPixel(y,-x,value); SetPixel(-y,-x,value); }
LINGKARAN Delapan titik simetris pada lingkaran y x 45 (x, y) (x, -y)
LINGKARAN B. Algoritma Lingkaran Midpoint Algoritma lingkaran Midpoint juga disebut algoritma lingkaran Bressenham. Pembentukan semua titik berdasarkan titik pusat dengan penambahan semua jalur di sekeliling lingkaran. Algoritma ini diturunkan dari algoritma Midpoint untuk pembentukan garis. Difokuskan pada bagian 45 dari suatu lingkaran, dan menggunakan procedure CirclePoints untuk menampilkan titik dari seluruh lingkaran. < 0, bila (x, y) di dalam garis lingkaran = 0, bila (x, y) pada garis lingkaran > 0, bila (x, y) di luar garis lingkaran fcircle(x, y)
LINGKARAN yk yk-1 yk-2 yk-3 yk-4 xk xk+1 xk+2 xk+3 xk+4 Midpoint
LINGKARAN Langkah-langkah pembentukan lingkaran berdasarkan Algoritma Circle Midpoint adalah: Tentukan radius r dengan titik pusat lingkaran (xc, yc), hingga diperoleh titik awal pada pusat lingkaran: (x0, y0) = (0, r) Hitung nilai parameter : 3. Untuk setiap posisi xk, dimulai dengan k=0 berlaku ketentuan: - bila pk < 0 maka titik selanjutnya adalah (xk+1, yk) dan pk+1 = pk + 2 xk+1 + 1 - bila tidak, titik selanjutnya adalah (xk+1, yk - 1) dan pk+1 = pk + 2 xk+1 + 1 – 2 yk+1 dimana 2 xk+1 = 2 xk + 2 dan 2 yk+1 = 2 yk – 2 Tentukan titik simetris pada ketujuh oktan yang lain Gerakan setiap posisi pixel (x, y) pada garis lingkaran dengan titik pusat (xc, yc) dan plot nilai koordinat : x = x + xc, y = y + yc 6. Ulangi langkah 3 sampai dengn 5 hingga x ≥ y
LINGKARAN y y=x 10 9 8 7 6 5 4 3 2 1 x
Contoh Buatlah lingkaran dengan titik pusat (0,0) dan radiusnya = 10. Jawab :
LINGKARAN Prosedur Algoritma Lingkaran Midpoint Prosedur berikut menampilkan posisi pixel pada monitor menggunakan algoritma MidPoint. Input yang digunakan untuk prosedur ini adalah koordinat titik pusat dan radius lingkaran. Posisi pixel ditentukan dengan rutin SetPixel. void circleMidPoint(int xCenter, int yCenter, int radius) { x=0; y=radius; p=1-radius; while(x<y) { x++; if(p<0) p += 2*x + 1; else { y--; p += 2*(x-y) + 1; } circlePlotPoints(); }
LINGKARAN Fungsi CirclePlotPoints() : void circlePlotpoint(int xCenter, int yCenter, int x, int y) { SetPixel(xCenter + x, yCenter + y); SetPixel(xCenter - x, yCenter + y); SetPixel(xCenter + x, yCenter - y); SetPixel(xCenter - x, yCenter - y); SetPixel(xCenter + y, yCenter + x); SetPixel(xCenter - y, yCenter + x); SetPixel(xCenter + y, yCenter - x); SetPixel(xCenter - y, yCenter - x); }
Tugas Buatlah lingkaran dengan titik pusat (0,0) dan radiusnya = 8 dengan algorithma Midpoint (Bressenham). Implementasikan algorithma lingkaran midpoint kedalam aplikasi program komputer dengan bahasa pemerograman yg anda kuasai untuk soal nomer 1. Selamat mengerjakan