Anda di halaman 1dari 8

Nama : Mitha Maharani Wahyudi

NPM : 177006058
Kelas : D
Mata Kuliah : Grafika Komputer

ANALISIS APLIKASI OBJEK PRIMITIF LINGKARAN

Gambar 1
Gambar 1 merupakan hasil dari pembuatan aplikasi objek primitive lingkaran
di Borland Delphi 7. Borland Delphi 7 merupakan bahasa pemrograman berbasis
Windows yang menyediakan fasilitas pembuatan aplikasi visual seperti Visual Basic.
Delphi memberikan kemudahan dalam menggunakan kode program, kompilasi yang
cepat, penggunaan file unit ganda untuk pemrograman modular, pengembangan
perangkat lunak, pola desain yang menarik serta diperkuat dengan bahasa
pemrograman yang terstruktur dalam bahasa pemrograman Object Pascal. Delphi
memiliki tampilan khusus yang didukung suatu lingkup kerja komponen Delphi untuk
membangun suatu aplikasi dengan menggunakan Visual Component Library (VCL).
Sebagian besar pengembang Delphi menuliskan dan mengkompilasi kode program
dalam IDE (Integrated Development Environment).
Gambar 2

Tools

Lembar

Kerja

Gambar 3
Saat kita membuat new application atau new project (Gambar 2), maka akan
menampilkan 2 lembar kerja yaitu unit1.pas untuk membuat sintak dan form1 untuk
membuat tampilan atau output aplikasi (Gambar 3).
Gambar 4
Untuk membuat Form seperti Gambar 4 yaitu dengan menggunakan tools yang
sudah tersedia pada aplikasi Delphi 7 (Gambar 2). Form yang digunakan pada aplikasi
ini diantaranya Button, form edit, CheckBox. Button, untuk menampilkan output, Form
Edit atau jari-jari lingkaran untuk menginput nilai jari-jari. CheckBox Lingkaran Penuh
untuk menampilkan lingkaran penuh. Untuk mengoperasikan form dan memunculkan
lingkaran yang dibuat,dibutuhkan prosedur seperti berikut:
1. DEKLARASI PROSEDUR
type
TForm1 = class(TForm)
Panel1: TPanel;
EJari: TEdit;
Label1: TLabel;
GambarBtn: TButton;
LingkaranPenuhCheck: TCheckBox;
procedure GambarBtnClick(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift:
TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
Tabel 1
Tabel 1 merupakan deklarasi prosedur dari GambarButton, dan form1
(formmousedown, formmousemove dan formmouseup didapatkan di object inspector
Form1 yaitu pada event). Cara mendeklarasinya dengan mengklik form-form tersebut
maka akan muncul di deklarasi prosedur. Setelah di deklarasi maka procedur tersebut
ditambahkan fungsi-fungsi sebagai berikut :
2. Penambahan Implementasi pada prosedur GambarButton,
FormMouseDown, FormMouseMove,FormMouseUp
procedure TForm1.GambarBtnClick(Sender: TObject);
begin
Canvas.FillRect(Rect(0,Panel1.Height,Width,Height));
xcenter:=Width div 2;
ycenter:=(Height - Panel1.Height) div 2;
GambarLingkaran(StrToInt(EJari.Text));
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button:


TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
xcenter :=x ;
ycenter := y;
fInDrawing:=True;
LingkaranPenuhCheck.Checked:=True;
fJari:=10;
Canvas.Pen.Mode:=pmNotXor;
GambarLingkaran(fJari);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift:


TShiftState; X,
Y: Integer);
var
dx,dy:integer;
begin
if fInDrawing then
begin
GambarLingkaran(fJari);
dx:=abs(xcenter - x);
dy:=abs(ycenter - y);
if dx > dy then fjari := dx else fjari :=dy;
GambarLingkaran(fjari);
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button:


TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
dx,dy:integer;
begin
fInDrawing:=False;
GambarLingkaran(fJari);
dx:=abs(xcenter - x);
dy:=abs(ycenter - y);
if dx > dy then
fjari := dx else fjari :=dy;
GambarLingkaran(fjari);
Canvas.Pen.Mode:=pmCopy;
GambarLingkaran(fJari);
end;
end.
Tabel 2
Tabel 2 merupakan implementasi prosedur dari form-form yang di deklarasi
di tabel 1. Prosedur pada FormMouseDown, FormMouseMove dan FormMouseUp
diberi implementasi untukmenggambar sebuah lingkara saat memberiinputan jari-
jari akan membentuk lingkaran yang tidak penuh dan saat menceh lingkaran penuh
akan membentuk lingkaran penuh, proses pemebentukan lingkrana tersebut di atur
oleh prosedur FormMouseDown, FormMouseMove dan FormMouseUp . Prosedur
GambarButton diberi implementasi untuk menampilkan hasil perhitungan dari jari-
jari yang diinputkan dan mencek lingkaran penuh.
3. Private Declaration
private
{ Private declarations }
fInDrawing:Boolean;
fJari,xcenter,ycenter:integer;

procedure GambarLingkaran (r:integer);


procedure GambarTitik(xi,yi:integer);
Tabel3
Tabel 3 merupakan tabel private deklarasi, private deklarasi ini untuk
mendeklarasi prosedur manual. Pada private deklarasi ini ada 2 prosedur yang
dideklarasi yaitu GambarLingkaran dan GambarTitik. Setelah dideklarasi seperti ini,
Tambahkan fungsi implementasinya seperti berikut:
4. Penambahan Implementasi pada prosedur GambarLingkaran dan
GambarTitik
procedure TForm1.GambarTitik(xi,yi:integer);
var
x,y:integer;
begin
x:=xcenter+xi;
y:=ycenter-yi;
//kuadran 1
Canvas.Pixels[x,y]:=clBlack;
//jika ingin menggambar penuh maka ubah titik ke kuadran ii,
iii, dan iv
if LingkaranPenuhCheck.Checked then
begin
x:=xcenter-xi;
y:=ycenter-yi; //kuadran 2
Canvas.Pixels[x,y]:=clBlack;
x:=xcenter-xi;
y:=ycenter+yi; //kuadran 3
Canvas.Pixels[x,y]:=clBlack;
x:=xcenter+xi;
y:=ycenter+yi; //kuadran 4
Canvas.Pixels[x,y]:=clBlack;
end;
end;

procedure TForm1.GambarLingkaran (r:integer);


var
d1,d2:real;
xi,yi:integer;
mh,md,mv:integer;
begin
xi:=0;
yi:=R;
while yi > 0 do
begin
GambarTitik(xi,yi);
md:=abs(sqr(xi+1)+sqr(yi-1)-sqr(r));
mh:=abs(sqr(xi+1)+sqr(yi) - sqr(r));
mv:=abs(sqr(xi)+sqr(yi-1) - sqr(r));
d1:=sqr(xi+1) + sqr(yi-1) - sqr(r);
if d1 < 0 then //cek apakah memilih D atau H
begin
d2:=mh-md; //cek apakah akan memilih H atau D
if d2 <= 0 then
begin
xi:=xi+1; //pilih titik H
yi:=yi;
end
else
begin
xi:=xi+1; //pilih titik D
yi:=yi-1;
end;
end
else if d1 > 0 then
begin
d2:=mv - md; //cek apakah akan memilih V atau D
if d2 <= 0 then
begin
xi:=xi;
yi:=yi-1;
end
else
begin
xi:=xi+1;
yi:=yi-1;
end;
end
else if d1 = 0 then
begin
xi:=xi+1; //memilih D
yi:=yi-1;
end;
end;
end;
Tabel 4
Tabel 4 merupakan implementasi dari prosedur yang telah di deklarasi pada
tabel 3. Procedur GambarTitik di beri implementasi atau fungsi untuk menghitung titik
per kuadran setalah diberi jari-jari.Yang dihitung pertama yaitu titik pada kuadran 1.
Jika ingin lingkaran penuh, maka perhitungan dilanjutkan sampai kuadran 4, maka
akan membuat titik untuk membuat lingkaran penuh. Setelah perhitungan pada
Procedure GambarTitik, maka hasil dari GambarTitik akan di lanjutkan ke Prosedur
GambarLingkaran, pada rosedur ini lingkaran di buat. Pada procedure tersebut terdapat
rumus ataupun fungsi untuk proses menghitung saat jari-jari diinputkan dan proses
akan berakhir pada saat nilai d1=0, dan lingkaran akan ditampilkan pada form setelah
proses perhitungan berhenti.

Gambar 5

Gambar 6
Gambar 5 dan Gambar 6 merupakan hasil dari apliaksi objek primitive
lingkaran yang dibuat. Dimana jari-jari yang di inputkan yaitu 50 dan menghasilkan
garis lengkung yang tidak begitu besar (tergantung jari-jari yang di inputkan) seperti
pada Gambar 5. Kemudian saat men-check lingkaran Penuh, perhitungan jari-jari akan
dilanjutkan dan menghasilkan lingkaran penuh sepertipada Gambar 6.

Anda mungkin juga menyukai