Tutorial Komputer Grafik
LATIHAN 3.4
MENGGAMBAR PENCERMINAN TERHADAP SUMBU X DAN SUMBU Y (TRANSFORMASI DASAR) •
Pada borland delphi buatlah tampilan form seperti berikut :
•
Untuk menambahkan komponen StringGrid bisa di akses pada tab control Additional pada component pallete, kemudian aturlah beberapa properties sebagai berikut: o FixedCol = 1, FixedRow = 0, o RowCount = 2, ColCount = 4 dan option goEditing = True.
•
Selanjutnya tekan F12 untuk berpindah ke jendela code editor dan buatlah deklarasi konstanta dan matrik pada bagian uses dan type program, sebagai berikut: //deklarasi konstanta Const N = 3; Type // deklarasi matrik Matrik33 = array[1..3,1..3] of Real; Matrik3N = array[1..3,1..N] of Real;
Oleh : Moh. Furqan, S. Kom. STT Nurul Jadid Paiton Probolinggo
Tutorial Komputer Grafik
•
Untuk kelengkapan program buatlah prosedur pendukung yaitu prosedur FormCreate / klik dua kali Form yang kosong, ketikkan kode di antara Begin dan End, berikut: // lebar layar dan tinggi layar maksimum x0 := ClientWidth div 2; y0 := ClientHeight div 2; Dalam hal ini x0 dan y0 berupa variabel global
•
Dan prosedur sumbu / Event OnPaint pada Form, ketikkan kode di antara Begin dan End, berikut: for k := 0 to ClientWidth do
// sumbu x
Canvas.Pixels[k,y0]:= clBlue; for k := 0 to ClientHeight do // sumbu y Canvas.Pixels[x0,k]:= clRed; Perintah di atas akan menampilkan sumbu koordinat x yang berwarna biru dan sumbu koordinat y yang berwarna biru secara otomatis saat form dijalankan. Sebaiknya k berupa variable lokal. •
Kemudian prosedur FormShow pada Form, ketikkan kode di antara Begin dan End, berikut: procedure TForm1.FormShow(Sender: TObject); begin with StringGrid1 do begin Cells[0,0]:='X'; Cells[0,1]:='Y'; end; end; Perintah di atas akan menampilkan tulisan x dan y pada StringGrid di sel (0,0) dan (0,1)
•
Buatlah prosedur tak standar untuk obyek2D, ketikkan kode di antara Begin dan End, sebagai berikut :
Oleh : Moh. Furqan, S. Kom. STT Nurul Jadid Paiton Probolinggo
Tutorial Komputer Grafik
procedure TForm1.Obyek2D(Sender: TObject; var Obyek:Matrik3N); var i,j : Integer; begin for i := 1 to 2 do for j := 1 to N do Obyek[i,j]:=StrToFloat(StringGrid1.Cells[j,i-1]); for j := 1 to N do Obyek[3,j]:=1; end;
Serta daftarkan prosedur tersebut pada bagian type dengan nama yang sama tetapi menghilangkan kata TForm1. Variabel Obyek didaftarkan sebagai variable global dan bertipe matrik3N. •
Untuk membuat prosedur tak standar Matrik Pencerminan terhadap sumbu x dan y ketikkan kode di antara Begin dan End, tanpa mendaftarkan prosedur pada bagian type, Sebagai berikut : procedure MatrikPencerminanSumbuX(var Mx : Matrik33); begin Mx[1,1]:=1;
Mx[1,2]:=0; Mx[1,3]:=0;
Mx[2,1]:=0;
Mx[2,2]:=-1; Mx[2,3]:=0;
Mx[3,1]:=0;
Mx[3,2]:=0; Mx[3,3]:=1;
end; procedure MatrikPencerminanSumbuY(var My : Matrik33); begin My[1,1]:=-1; My[1,2]:=0; My[1,3]:=0; My[2,1]:=0;
My[2,2]:=1; My[2,3]:=0;
My[3,1]:=0;
My[3,2]:=0; My[3,3]:=1;
end; Variabel Mx dan My didaftarkan sebagai variable global dan bertipe matrik33.
Oleh : Moh. Furqan, S. Kom. STT Nurul Jadid Paiton Probolinggo
Tutorial Komputer Grafik
•
Buatlah prosedur tak standar untuk perkalian matrik dengan obyek, ketikkan kode di antara Begin dan End, sebagai berikut : procedure MatrikKaliTransformasiObyek2D(var Obyek: Matrik3N; Mx : Matrik33); var i,j,k : Integer; Hasil : Matrik3N; begin for i := 1 to 3 do for k := 1 to N do begin Hasil[i,k]:=0; for j := 1 to 3 do Hasil[i,k]:= Hasil[i,k] + Mx[i,j] * Obyek[j,k]; end; Obyek := Hasil; end; Dalam hal ini prosedur tidak perlu di daftarkan pada bagian type karena tidak memanggil nilai, sedangkan untuk Mx sebagai variabel global.
•
Buatlah prosedur standar untuk segitiga, ketikkan kode di antara Begin dan End, sebagai berikut : procedure TForm1.btSegitigaClick(Sender: TObject); begin Obyek2D(Sender,Obyek); Canvas.MoveTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1])); Canvas.LineTo(trunc(X0 + Obyek[1,2]),trunc(Y0 - Obyek[2,2])); Canvas.MoveTo(trunc(X0 + Obyek[1,2]),trunc(Y0 - Obyek[2,2])); Canvas.LineTo(trunc(X0 + Obyek[1,3]),trunc(Y0 - Obyek[2,3])); Canvas.MoveTo(trunc(X0 + Obyek[1,3]),trunc(Y0 - Obyek[2,3])); Canvas.LineTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1])); end; Dalam hal ini btSegitiga adalah sebuah komponen edit, serta prosedur memanggil obyek2D dan membuat 3 buah garis dengan menggunakan perintah standar.
Oleh : Moh. Furqan, S. Kom. STT Nurul Jadid Paiton Probolinggo
Tutorial Komputer Grafik
•
Selanjutnya buatlah prosedur standar untuk tombol Cermin X, ketikkan kode di antara Begin dan End, sebagai berikut : procedure TForm1.btCerminXClick(Sender: TObject); begin Obyek2D(Sender,Obyek); MatrikPencerminanSumbuX(Mx); MatrikKaliTransformasiObyek2D(Obyek,Mx); Canvas.MoveTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1])); Canvas.LineTo(trunc(X0 + Obyek[1,2]),trunc(Y0 - Obyek[2,2])); Canvas.MoveTo(trunc(X0 + Obyek[1,2]),trunc(Y0 - Obyek[2,2])); Canvas.LineTo(trunc(X0 + Obyek[1,3]),trunc(Y0 - Obyek[2,3])); Canvas.MoveTo(trunc(X0 + Obyek[1,3]),trunc(Y0 - Obyek[2,3])); Canvas.LineTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1])); end; Dalam hal ini btCerminX adalah sebuah komponen edit, kemudian prosedur akan memanggil obyek2D, Matrik Pencerminan Sumbu X, Matrik Kali Transformasi Obyek2D dan menggambarkan bangun hasil dengan fungsi library delphi.
•
Selanjutnya buatlah prosedur standar untuk tombol Cermin Y, ketikkan kode di antara Begin dan End, sebagai berikut : procedure TForm1.btCerminYClick(Sender: TObject); begin Obyek2D(Sender,Obyek); MatrikPencerminanSumbuY(My); MatrikKaliTransformasiObyek2D(Obyek,My); Canvas.MoveTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1])); Canvas.LineTo(trunc(X0 + Obyek[1,2]),trunc(Y0 - Obyek[2,2])); Canvas.MoveTo(trunc(X0 + Obyek[1,2]),trunc(Y0 - Obyek[2,2])); Canvas.LineTo(trunc(X0 + Obyek[1,3]),trunc(Y0 - Obyek[2,3])); Canvas.MoveTo(trunc(X0 + Obyek[1,3]),trunc(Y0 - Obyek[2,3])); Canvas.LineTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1])); end;
Oleh : Moh. Furqan, S. Kom. STT Nurul Jadid Paiton Probolinggo
Tutorial Komputer Grafik
Dalam hal ini btCerminY adalah sebuah komponen edit, kemudian prosedur akan memanggil obyek2D, Matrik Pencerminan Sumbu Y, Matrik Kali Transformasi Obyek2D dan menggambarkan bangun hasil dengan fungsi library delphi. •
Pada tombol Ulang dan keluar, ketikkan kode berikut: // ulang procedure TForm1.btUlangClick(Sender: TObject); var i,j : Integer; begin Form1.Refresh; for i := 1 to 2 do for j := 1 to 3 do StringGrid1.Cells[j,i-1]:=''; end; // keluar procedure TForm1.btExitClick(Sender: TObject); begin Application.Terminate; end;
•
Kemudian jalankan program dengan menekan F9 dan perhatikan hasilnya.
Cermin obyek terhadap sumbu Y
Awal Obyek
Cermin obyek terhadap sumbu X
Titik koordinat obyek
Oleh : Moh. Furqan, S. Kom. STT Nurul Jadid Paiton Probolinggo