You are on page 1of 5

Grafika Komputer Pertemuan Ke-4

61
BAB-4
LINGKARAN dan ELIPS

Algoritma Bresenham dapat diterapkan untuk menggamba lingkaran. Dalam
menggambar lingkaran cukup mencari nilai dari oktan pertama saja.
By: I Gusti Ngurah Suryantara, S.Kom., M.Kom

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.

ALGORITMA LINGKARAN
BRESENHAM (Mid Point)
Dari gambar 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.

Gambar 4.1. Lingkaran dengan 8 titik simetris


SIMETRIS 8 TITIK
Void CirclePoints(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);
}
1. Masukkan jari-jari dan pusat lingkaran (x
c
,y
c
)
dan dapatkan titik permulaan pada keliling yang
berpusat pada titik awal sebagai:
(x
0
, y
0
) = (0,r)

2. Hitung nilai awal parameter keputusan sebagai
P
0
= 5/4 - r
3. Pada masing-masing posisi x
k
, mulai dari k=0,
lakukan tes berikut:
Jika pk <0, titik berikut adalah (x
k+1
,y
k
) dan
p
k+1
= p
k
+2x
k+1
+1

Bila tidak, titik selanjutnya adalah (x
k+1
,y
k
-
1), dan P
k+1
= P
k
+ 2x
k+1
+ 1-2y
k+1
dimana
2
xk+1
= 2
xk+2
dan 2
yk+1
= 2
yk
2

4. Tentukan titik simetri untuk 7 oktan yang lain.

5. Pindahkan masing-masing posisi piksel (x,y) ke
bagian lingkaran yang berpusat ke (x
c
,y
c
) 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

dari suatu lingkaran.



Algoritma Lingkaran Midpoint
Void CircleMidPoint(int Xcenter, int
Ycenter, int Radius)
{
X = 0;
Y = Radius;
P = 1-Radius;
While (X<Y) {
X = X+1;
If (P < 0 )
P = P+ 2*X+1;
Else{
Y = Y-1;
P = P + 2*(X-Y)+1;
}
}
CirclePlotPoints();
}


LATIHAN
Latihan Lingkaran
Diketahui titik pusat lingkaran (0,0) dan radius 8,
perhitungan berdasarkan oktan dari kuadran pertama
dimana x = 0 sampai y = 0. Nilai parameter dapat
ditentukan dengan.
P0 = 1 r
= 1 8 = -7
Koordinat titik awal adalah (x,r) = (0,8)
Grafika Komputer Pertemuan Ke-4
62
Jawab:
X = 0 Y = r = 8
--------------------------------------------------------------
K=0
P = 1 r
= 1 8 = -7

Loop ke-1
x = x +1 y tetap 8
= 0 +1 = 1
---------------------------------------------------------------
K=1
P = P + 2 * X + 1
= -7 + 2 * 1 + 1
= -4

Loop ke-2
x = x +1 y tetap 8
= 1 +1 = 2
---------------------------------------------------------------
K=2
P = P + 2 * X + 1
= -4 + 2 * 2 + 1
= 1

Loop ke-3
x = x +1 y = y-1
= 2 +1 = 3 = 8-1 = 7
---------------------------------------------------------------
K=3
P = P + 2 * (X Y) +1
= 1 + 2 * (3 7) + 1
= -6

Loop ke-4
x = x +1 y tetap 7
= 3 +1 = 4
---------------------------------------------------------------
K=4
P = P + 2 * X + 1
= -6 + 2 * 4 + 1
= 3

Loop ke-5
x = x +1 y = y-1
= 4 +1 = 5 = 7-1 = 6
---------------------------------------------------------------
K=5
P = P + 2 * (X - Y) + 1
= 3 + 2 *(5 - 6) + 1
= 2

Loop ke-6
x = x +1 y = y-1
= 5 +1 = 6 = 6-2 = 5
---------------------------------------------------------------
K=6
P = P + 2 * (X - Y) + 1
= 2 + 2 *(6 - 5) + 1
= 5 Loop berhenti karena x > y
Tabel hasil proses
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 )

8
7
6
5
4
3
2
1


0

0 1 2 3 4 5 6 7 8



4.2.ELIPS
Elips merupakan modifikasi dari bentuk lingkaran,
dengan memasukkan mayor dan minor axis pada
prosedur lingkaran. Elips ditentukan oleh satu set titik
dengan memperhitungkan jumlah jarak dari kedua
posisi. Bila jarak kedua titik dari sembarang titik
P(X,Y) pada elpis diberi label d1 dan d2.

Gambar 4.2. Bagian dari elips















Grafika Komputer Pertemuan Ke-4
63
PROGRAM ELIPS
Program elips dibuat dengan menggunakan bahasa C
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);
}

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;

If ((2*Ry*Ry*x) < (2*Rx*Rx*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 2
P = 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();
}
}
Grafika Komputer Pertemuan Ke-4
64
LATIHAN

Latihan Elips
Diketahui titik pusat elips (0,0) dan mayor axis r
x
= 6, serta minor axis r
y
= 8, perhitungan berdasarkan pada
kuadran pertama sebagai berikut. Nilai parameter dapat ditentukan. Koordinat titik awal adalah (x,r) = (0,8)

Jawab
Rx2 = Rx * Rx Ry2 = Ry * Ry
= 6 * 6 = 36 = 8 * 8 = 64

TowRx2 = 2 * Rx2 TowRy2 = 2 * Ry2
= 2 * 36 = 72 = 128

X = 0 Y = Ry = 8

Px = 0 Py = TwoRx2 * Y
= 72 * 8
= 576
Jika ((2*Ry*Ry*x) < (2*Rx*Rx*y)) Maka
2*8*8*0 =0 < 2*6*6*8 = 576
Kondisi ini opsional , dihilangkan pun tidak ada pengaruhnya.

Bagian1
P = Round(Ry2-(Rx2*Ry) + (0.25*Rx2))
= Round(64-(36*8)+(0.5*36))
= Round(64-(288) + (9)
K0 P = Round(-215)

Ulangi selama Px < Py
---------------------------------------------------------------------------------------------------------------------------------------
Loop 0:
X = X +1 Nilai Y tetap yaitu Y= 8
= 0 + 1
= 1

Px = Px + TwoRy2
= 0 + 128
= 128

(Nilai P = -215 ) < 0 Maka:
P = P + Ry2 + PX
= -215 + 64 + 128
K1 P = -23

---------------------------------------------------------------------------------------------------------------------------------------
Loop 1:
X = X +1 Nilai Y tetap yaitu Y= 8
= 1 + 1
= 2

Px = Px + TwoRy2
= 128 + 128
= 256

(Nilai P = -23) < 0 Maka:
P = P + Ry2 + PX
= -23 + 64 + 256
K2 P = 297
---------------------------------------------------------------------------------------------------------------------------------------
Grafika Komputer Pertemuan Ke-4
65
Lanjutkan ........

PRAKTIKUM

Lingkaran
Pada praktikum kali ini kita akan membuat program pembentuk lingkaran dengan menggunakan algoritma
midpoint. Desain sebuah form seperti Gambar 4.3.

Gambar 4.3. Lingkarang dengan midpoint.




Elips
Buatlah program untuk membuat elips berdasarkan algoritma pembentuk elips.

You might also like