BAB-4
LINGKARAN dan ELIPS
Pada materi kali ini kita akan membahas tentang algoritma pembentuk lingkaran dan elips
4.1. LINGKARAN
Algoritma bressenham dapat diterapkan untuk menggambar sebuah lingkaran. Untuk menggambar lingkaran hanya diperlukan menggambar titik-titik pada oktan pertama saja sedangkan titik-titik pada kuadran lain dapat diperolah dengan mencerminkan titik-titik pada kuadran pertama.
Dapat disimpulkan bahwa jika algoritma bresenham bekerja mulai dari (x=0, y=R) searah jarum jam, maka y merupakan fungsi menurun dari x, demikian juga sebaliknya, jika dimulai dari (y=0, x=R) maka x akan merupakan fungsi menurun dari y.
1. Masukkan jari-jari dan pusat lingkaran (xc,yc) dan dapatkan titik permulaan pada keliling yang berpusat pada titik awal sebagai:(x0 , y0) = (0,r)
2. Hitung nilai awal parameter keputusan sebagaiP0 = 5/4 – r
3. Pada masing-masing posisi xk, mulai dari k=0, lakukan tes berikut jika pk <0, titik berikut sepanjang lingkaran yang berpusat (0,0) adalah (xk+1,yk) dan selain itu, titik berikutnya untuk lingkaran adalah (xk + 1, yk – 1) dan dengan 2xk+1 = 2xk+2 dan 2yk+1 = 2yk – 2 4. Tentukan titik simetri untuk 7 oktan yang lain. 5. Pindahkan masing-masing posisi piksel (x,y) ke bagian lingkaran yang berpusat ke (xc,yc) dan lukis nilai koordinat. 6. Ulangi langkah 3 sampai 5 hingga x>= y.
MIDPOINT
Algoritma midpoint disebut juga algoritma lingkaran Bresenham. Algoritma ini hanya memperhatikan bagian 45 drajat dari suatu lingkaran.
Algoritma Lingkaran Midpoint
Void CircleMidPoint(int Xcenter, int Ycenter, int Radius)
{
X = 0;
Y = Radius;
P = 1-Radius;
While (X
Nilai dari penelusuran algoritma di tuliskan dalam tabel berikut:
K Pk (xk+1,yk+1) oktan 1
- - ( 0,8 )
0 -7 ( 1,8 )
1 -4 ( 2,8 )
2 1 ( 3,7 )
3 -6 ( 4,7 )
4 3 ( 5,6 )
5 2 ( 6,5 )
4.2. ELIPS
Dengan sedikit memodifikasi algoritma lingkaran midpoint maka kita dapat membuat sebuah elips, dengan memasukkan nilai mayor dan nilai minor axis pada prosedur lingkaran.
Algoritma Elips Midpoint
Dalam membuat elips midpoint pendekaan yang dilakukan sama dengan menampilkan lingkaran. Metode elips dengan midpoint dijalanklan pada kuadran pertama. Bagian pertama berdasarkan kemiringan elips rx < ry. Bila slope < 1 maka penambahan steps pada arah sumbu x, dan bila kemiringan > 1 maka unit steps menurut sumbu y. Bagian 1 dan 2 dapat menggunakan bermacam cara, pertama dimulai dari posisi (0,ry) dan steps searah jarum jam sepanjang jalur elips. Pergerakan unit steps dalam x pada saat steps > 1.
Void ElipsMidPoint(Int xCenter,int yCenter,int Ex,int Ry,int P)
{ int Rx2 = Rx*Rx; int Ry2 = Ry*Ry;
int twoRx2 = 2*Rx2;
int TwoRy2 = 2*Ry2;
x = 0;
y = Ry;Int px = 0;
int py = twoRx2 * y;
//Bagian 1
P = Round(Ry2 – (Rx2 * Ry) + (0.25 * Rx2));
ElipsPlotPoints();
While (px < py ) { X ++; Px += twoRy2; If (p<0) P +=Ry2 + px; Else { y- -; py - = twoRx2; p += Ry2 + px – py; } elipsPlotPoints(); } } //Bagian 2P = round(Ry2*(x+0.5)*(x+0.5)+Rx2*(y-1)*(y-1)– Rx2*Ry2); While (y>0)
{
Y- -;
Py - =twoRx2;
If (p>0)
P + = Rx2 – py;
Else
{
X++;
Px += twoRy2;
P += Ry2 + px – py;
}
ElipsPlotPoints();
}
}
Void ElipsPlotPoints()
{
//Prosedur untuk menuliskan piksel
SetPixel(Xcenter + X, yCenter + Y);
SetPixel(Xcenter - X, yCenter + Y);
SetPixel(Xcenter + X, yCenter - Y);
SetPixel(Xcenter - X, yCenter - Y);
}
Latihan Elips
Diketahui titik pusat elips (0,0) dan mayor axis rx = 6, serta minor axis ry = 8, perhitungan berdasarkan pada kuadran pertama sebagai berikut. Nilai parameter dapat ditentukan. Koordinat titik awal adalah (x,r) = (0,8)
Dengan menggunakan algoritma elips maka hasilnya seperti pada tabel berikut:
K Pk ( xk+1, yk+1 )
- - ( 0,8 )
0 -215 ( 1,8 )
1 -23 ( 2,8 )
2 297 ( 3,7 )
3 241 ( 4,6 )
4 -108 ( 5,5 )
5 236 ( 5,4 )
6 -16 ( 6,3 )
7 600 ( 6,2 )
8 492 ( 6,1 )
9 456 ( 6,0 )
Tidak ada komentar:
Posting Komentar
Silahkan berkomentar di bawah ini . . .