MODUL PRAKTIKUM
Ve r 1.0
O le h : M. G unta ra
ST M I K AK AK OM
2 0 0 5
BAB 1. Penghasil Garis (Line generator) menggunakan Algoritma DDA
1.1. Maksud dan Tujuan
1.1.1 Maksud
Pe ng ha sil g a ris (line g e ne ra to r) a d a la h p ro se d ur ya ng d ig una ka n untuk m e ng ha silka n/ m e m p ro d uksi b e ntuk g a ris ya ng te rsusun d a ri titik-titik e le m e n g a m b a r (p ixe l) d e ng a n a lg o ritm a DDA (dig ita l diffe re nc ia l a na lyze r)
1.1.2 Tujuan
1. Ag a r m a ha sisw a d a p a t m e ng e ta hui b a g a im a na a lg o ritm a untuk m e m b ua t sa tu g a ris
2. Ag a r m a ha sisw a d a p a t m e m b ua t g a ris d a ri p ixe l
3. Ag a r m a ha sisw a d a p a t m e m b a nd ing ka n g a ris ya ng d ib ut d e ng a n a lg o ritm a DDA d e ng a n g a ris ya ng d iha silka n d a ri re se rve d wo rd C ++
Build e r
1.2. Teori Singkat
Pa d a p rinsip nya se b ua h g a ris ha nya la h kum p ula n d a ri titik-titik ya ng d ig a m b a r se c a ra ko ntinu d a n linie r. Sa la h sa tu a lg o ritm a ya ng d a p a t d ig unka n untuk m e m b ua t g a ris a d a la h a lg o ritm a DDA (dig ita l diffe re ntia l a na lyze r) de ng a n p se ud o a lg o ritm se b a g a i b e rikut.
Pe rsa m a a n g a ris luurs d e ng a n ko o rd ina t c a rte sius a d a la h
y=m .x + b ... 1- 1
d e ng a n m a d a la h ke m iring a n g a ris, b tiik p a d a sum b u y. Jika d ika ta hui 2 tiik a khir d a ri se g m e n g a rio s ya ng d ip o sisika n p a d a titik x1,y1 d a n x2,y2 m a ka untuk m e ne ntuka n ke m iring a n g a ris a d a la h :
m = y2- y1 ... 1- 2
x2-x1
m = y1- m .x1 ... 1- 3
De ng a n d e m ikia n a lg o ritm a DDA a d a la h se b a g a i b e rikut.
1. Tentukan 2 titik untuk membentuk garis
2. beri 2 titik tersebut dengan titik awal (x0,y0) dan titik akhir (x1,y1) 3. Hitung dx=x1-x0 dan dy=y1-y0
4. tentukan jarak maks jumlah penambahan nilai x dan nilai y dengan cara
jika ⏐dx⏐ >⏐dy⏐ maka step=⏐dx⏐, jika tidak maka step=⏐dy⏐
5. Hitunjg penambahan koordinat piksel dengan cara x_tambah=dx/step dan y_tambah=dy/step
6. tentukan koordinat berikutnya (xk+1,Yk+1) dengan koordinat (x+x_tambah,y+y_tambah)
7. Posisi pixel pada layar ditenbtukan dengan pembulatan nila tersebut 8. Ulangi langkah 4 sampai posisi pixel mencapai x=x1 dan y=y1
1.3. Praktik
La kuka n la ng ka h se b a g a i b e rikut
L
Perhatian !1. Modul ini diasumsikan bahwa praktikan sudah memahami dasar-dasar C++ Builder)
2. Pada penulisan kode prrogram C++ ,huruf besar dan huruf kecil berbeda, misal Canvas ≠ canvas 1. Akttifka n C ++ Build e r (C B) d a n b uka fo rm b a ru
2. Bua t fo rm d e ng a n to m b o l se b a g a i b e rikut.
3. Ke tik ko d e p ro g ra m p a d a Butto n1- C lic kEve nt se b a g a i b e rikut
void __f ast call TForm1: : But t on1Click(TObj ect *Sender) {
int x0, y0, x1, y1, dx, dy, step, absdx, absdy, k;
float x, y, x_tambah, y_tambah;
x0=10;y0=10; Åkoordinat t it ik awal garis x1=100;y1=200; Åkoordinat t it ik akhir garis dx=x1-x0;
dy=y1-y0;
x=float(x0);y=float(y0);
if (dx>dy) step=dx;
else
step=dy;
x_tambah=(float) dx/ step;
y_tambah=(float) dy/ step ; for (k=0;k<step;k++) {
x+=x_tambah;
y+=y_tambah;
for(int t=0;t<100000;t++){} Åbaris ini unt uk memperlambat proses penggambaran t it ik
Canvas->Pixels[ int(x)] [ int(y)] =clRed; Åmenggambar t it ik
Garis dari DDA Garis dari C++
Properties Name: button1 Caption:Garis dari DDA
Properties Name: button2 Caption:Garis dari C++
}
4. Bua t ko d e p ro g ra m p a d a b utto n2- c lic ke ve nt se b a g a i b e rikut. void __f ast call TForm1: : But t on2Click(TObj ect *Sender)
{
Canvas->MoveTo(200, 10); Åt it ik awal garis Canvas->LineTo(300, 200); Åt it ik akhir garis }
5. Ja la nka n a p lika si ini.
6. Klik to m b o l kiri, a m ja ti a p a ya ng te rja d i d a n ke m ud ia n klik to m b o l ka na n d a na m a ti a p a ya ng te rja d i.
1.4. Latihan L
Perhatian !Latihan pada modul praktikum ini dikerjakan saat praktikum
1. G a ntila h titik a w a l d a n titik a khir d e ng a n ko o rd ina t ya ng la in (se m b a ra ng ). Am a tila h ya ng te rja d i
2. Pa d a fo rm d ia ta s b ua tla h g a ris d e ng a n p e rinta h C B d e ng a n ko o rd ina t a w a l d a n a khir sa m a d e ng a n no 1 d ia ta s
1.5. Tugas L
Perhatian !Tugas pada modul praktikum ini dikerjakan dirumah dan dicantumkan pada laporan resmi setiap modul
1. Am a tila h a d a ka h p e rb e d a a n kua lita s g a ris ya ng d ib ua t d e ng a n a lg o ritm a DDA d a n g a ris ya ng d ip ro d uksi o le h C B !
2. Me ng a p a ha l te rse b ut b isa te rja d i ?
3. Me ng a p a p e rinta h m e ng g una ka n re se rve d wo rd m ilik C ++ Build e r (C B) le b ih ring ka s ?
BAB 2. Menggambar obyek dari bentuk geometri
2.1. Maksud dan Tujuan
2.1.1 Maksud
Be ntuk g e o m e tri a d a la h b e ntuk g a m b a r b e rup a g a ris, p o lig o n, e lip s, ling ka ra n, a ta u kurva
2.1.2 Tujuan
Ag a r m a ha sisw a d a p a t m e m b ua t p ro g ra m untuk m e ng g a m b a r b e ntuk- b e ntuk g e o m e tri
2.2. Teori Singkat
Be ntuk g e o m e tri d a n ko d e p ro g ra m nya a d a la h.
G a ris
MoveTo(x0, y0) LineTo(x1, y1) LineTo(xn, yn)
De ng a n x0,y0: ko o rd ina t titik a w a l g a ris X1,y1:ko o rd ina t a khir g a ris ke -1
Xn,yn:ko o rd ina t a khir g a ris ke -2 (n:2,3,4, d st.) Ko ta k
Rectangle(x0, y0, x1, y1)
De ng a n x0,y0: ko o rd ina t sud ut a w a l ko ta k
X1,y1:ko o rd ina t sud ut a khir ko ta k (sud ut d ia g o na l)
Ling ka ra n/ Ellip s
Ellipse(x0, y0, x1, y1)
De ng a n x0,y0: ko o rd ina t sud ut a w a l e llip se X1,y1:ko o rd ina t sud ut a khir e llip se
Bila ja ra k a nta ra x1-x0 sa m a d e ng a n y1-y0 m a ka g a m b a r te rse b ut b e rb e ntuk ling ka ra n.
Kurva
Arc(X0, Y0, X1, Y1, …. , xn, yn)
De ng a n x0,y0:tiik kurva a w a l X1,y1:titik kurva ke -1
Xn,yn:titik kurva ke -n (n:2,3,4,d st.) Po lyg o n
POINT var(j umlah max sudut polygon-1) Var[ 0] =Point(x0, y0);
Var[ 1] =Point(x1, y1);
…..
Var[ n] =Point(xn, yn);
Polygon((TPoint*)var, j umlah max sudut-1);
De ng a n x0,y0:tiik a w a l p o lig o n
X1,y1:titik sud ut p o lyg o n ke -1
Xn,yn:titik sud ut p o lyg o n ke -n (n:2,3,4,d st.)
2.3. Praktik
1. Bua tla h fo rm se p e rti d ib a w a h ini
No : Ko m po ne n Pro pe rtie s
1 :TLa b e l C a p tio n : Me mb ua t b e ntuk g e o me tri 2:Ra d io G ro up s C a p tio n :Be ntuk
Na m e : Be ntuk Ite m s :
Garis Kotak Lingkaran Ellips Kurve Polygon
3:Pa intBo x Na m e :Pa intBo x1(de fa ult)
2. Ke tik ko d e p a d a Be ntuk- C lic kEve nt se b a g a i b e rikut.
void __f ast call TForm1: : Bent ukClick(TObj ect *Sender) {
int INDEKS=Bent uk->ItemIndex; Æmengambil nomor radio but t on Edit 1->Text=IntToStr(INDEKS); Æmengambil nomor radio but t on Paint Box1->Canvas->Rectangle(0, 0, ClientWidth-2, ClientHeight-2);
switch (INDEKS) {
case 0: Å pilihan radio paling atas (nilai 0-nol) Paint Box1->Canvas->MoveTo(10, 10); Å gambar garis Paint Box1->Canvas->LineTo(100, 200);
break;
case 1: Å pilihan radio baris ke-2(nilai 1)
PaintBox1->Canvas->Rectangle(10, 10, 100, 200); Å gambar kot ak break;
case 2:
PaintBox1->Canvas->Ellipse(10, 10, 200, 200); Å gambar lingkaran break;
Me m b ua t b e ntuk g e o m e tri
Garis Kotak Lingkaran Kurve Polygon Be ntuk
case 3:
PaintBox1->Canvas->Arc(10, 10, 50, 200, 300, 200, 30, 20);Å gambar busur break;
case 4:
POINT titik[ 5] ; Å deklarasi array unt uk t it ik-t it ik 5 sudut titik[ 0] =Point(10, 10);
titik[ 1] =Point(70, 10);
titik[ 2] =Point(180, 100);
titik[ 3] =Point(250, 200);
titik[ 4] =Point(0, 200);
PaintBox1->Canvas->Polygon((TPoint*)titik, 4); Å gambar polygon 5 t it ik sudut
break;
} }
3. Ja la nka n a p lika si ini
4. Klik p a d a m a sing -m a sing to m b o l ra d io Butto n, a m a ti ya ng te rja d i.
2.4. Latihan
1. Ta m b a h 1 fa silita s la g i untuk m e ng g a m b a r e llipse, se hing g a p a d a p iliha n Be ntuk d ita m b a h p iliha n untuk “Ellipse ”.
2. Bua t ko d e untuk m e m g g a m b a r e lip s te rse b ut 3. Ja la nka n a p lika si te rse b ut.
2.5. Tugas
1. Ap a p e rb e d a a n m e ng g a m b a r e llip se d e ng a n ling ka ra n
BAB 3. Menggambar suatu obyek dari geometri
3.1. Maksud dan Tujuan
3.1.1 Maksud
Ya ng d im a ksud d e ng a n m e ng g a m b a r sua tu o b ye k a d a la h m e m p ro d uksi/ m e m b ua t g a m b a r d e ng a n o b ye k te rte ntu (re a l a ta u a b stra k) ya ng d ib e ntuk d a ri g e o m e tri b a ik b e rup a g a ris, ling ka ra n a ta up iun kurva
3.1.2 Tujuan
1. Ag a r m a ha sisw a d a p a t m e ng a ta hui c a ra m e m b e ntuk sua tu g a m b a r 2. Ag a r m a ha sisw a d a p a t m e m b ua t sua tu g a m b a r d e ng a n b e ntuk
g e o m e tri
3.2. Teori Singkat
3.2.1 Membetuk suatu obyek dari geometri
Sua tu g a m b a r o b ye k b a ik riil m a up un a b stra k d p a a t d isusun a ta s d a sa r b e ntuk g e o m e tri, se p e rti c o nto h g a m b a r d ib a w a h ini.
G a m b a r d ia ta s m e rup a ka n p e rp a d ua n d a ri ko ta k, g a ris d a n ling ka ra n.
3.2.2 Membuat arsiran
Be ntuk-b e tnuk ya ng d a p a t d ia rsir a d a la h ko ta k, ling ka ra n/ e llip se , d a n p o lig o n. Pe rinta h a rsira n ini d ite m p a tka n se b e lum sua tu g e o m e tri d ig a m b a r. Pe rinta h untuk m e ng a rsir a d a la h
Brush=j enis arsiran
Color=RGB(merah,kuning,biru)
De ng a n je nis a rsira n = b sSo lid : a rsira n m e ra ta
b sVe rtic a l : a rsira n g a ris ve rtika l b sHo rizo nta l : a rsira n g a ris ve rtika l b sDia g o na l : a rsira n g a ris d ia g o na l b sC ro ss : ko ta k=ko ta k
me ra h : 0 – 255 kuning :0-255
b iru:0-255
3.3. Praktik
1. Bua tla h fo rm b a ru d e ng a n b e ntuk se b a g a i b e rikut.
No : Ko m po ne n Pro pe rtie s
1 :Tla b e l C a p tio n : Me mb ua t g a mb a r o b ye k 2:Ra d io G ro up s C a p tio n :G a mb a r
Na m e : G a m b a r Ite m s :
Rum a h
3:Pa intBo x Na m e :Pa intBo x1(de fa ult)
2. ke tik ko d e p a d a G a m b a r- C lic kEve nt se b a g a i b e rikut.
void __fastcall TForm1::GambarClick(TObj ect *Sender) {
int INDEKS=Gambar->ItemIndex;
PaintBox1->Canvas->Rectangle(0, 0, ClientWidth-2, ClientHeight-2);
switch (INDEKS) {
case 0:
Paint Box1->Canvas->Rectangle(50, 150, 200, 300); Å gambar bangunan kot ak Paint Box1->Canvas->Rectangle(70, 170, 120, 290); Å gambar kot ak pint u Paint Box1->Canvas->MoveTo(90, 170);
Paint Box1->Canvas->LineTo(90, 290); Ågaris t engah pint u Paint Box1->Canvas->MoveTo(50, 150); Ågambar segit iga at ap Paint Box1->Canvas->LineTo(200, 150);
Paint Box1->Canvas->LineTo(125, 10);
Paint Box1->Canvas->LineTo(50, 150);
Paint Box1->Canvas->Ellipse(100, 80, 150, 125); Ågambar lingkaran at ap break;
} }
3. Ja la nka n a p lika si te rse b ut d a n klik p a d a ra dio b utto n.
4. Wa rna lila h b a g ia n te m b o k d e ng a n w a rna hija u d a n b a g ia n a ta p kuning , se d a ng ka n d id a la m ling ka ra n w a rna hita m , se hing g a ko d e
Me m b ua t G a m b a r O b ye k
Rumah G a m b a r
void __fastcall TForm1::GambarClick(TObj ect *Sender) {
int INDEKS=Gambar->ItemIndex;
PaintBox1->Canvas->Rectangle(0, 0, ClientWidth-2, ClientHeight-2);
switch (INDEKS) {
case 0:
PaintBox1->Canvas->Brush->Style=bsSolid; Å arsiran solid (merat a)
PaintBox1->Canvas->Brush->Color=RGB(0, 255, 0); Åwarna arsiran t embok hij au
Paint Box1->Canvas->Rectangle(50, 150, 200, 300); Å gambar bangunan kot ak PaintBox1->Canvas->Brush->Color=RGB(255, 100, 100); Åwarn arsiran pint umerah muda
Paint Box1->Canvas->Rectangle(70, 170, 120, 290); Å gambar kot ak pint u Paint Box1->Canvas->MoveTo(90, 170);
Paint Box1->Canvas->LineTo(90, 290); Ågaris t engah pint u Paint Box1->Canvas->MoveTo(50, 150); Ågambar segit iga at ap Paint Box1->Canvas->LineTo(200, 150);
Paint Box1->Canvas->LineTo(125, 10);
Paint Box1->Canvas->LineTo(50, 150);
PaintBox1->Canvas->Brush->Color=RGB(0, 0, 0); Åwarna arsiran lingkaran hit am
Paint Box1->Canvas->Ellipse(100, 80, 150, 125); Ågambar lingkaran at ap break;
} }
5. Ja lla nka n a p lika si ini d a n liha t p e rb e d a a nnya .
Catatan
Bagian atap segitiga tidak dapat diarsir karena disusun dari garis. Agar dpat diarsir maka segitiga menggunakan polygon.
3.4. Latihan
1. G a ntila h se g itig a b a g ia n a ta p d e ng a n m e ng g una ka n p o lyg o n d a n b e rika n a rsira n p a d a p o lyg o n te rse b ut
2. g a ntila h a rsira n p a d a se g itig a tid a k m e ng g una ka n c sSo lid te ta p i c s Ve rtic a l
3.5. Tugas
Bua tla h g a m b a r o b ye k riil la in ya ng te rd iri a ta s : ling ka ra n/ e llip se , ko ta k d a n g a ris d e ng a n a e rira n d a n w a rna a rsira n b e b a s se sua i ke ing ina n sa ud a ra .