latihan-3-1.pdf
TRANSCRIPT
-
Tutorial Komputer Grafik
Oleh : Moh. Furqan, S. Kom.STT Nurul Jadid Paiton Probolinggo
LATIHAN 3.1
MENGGAMBAR TRANSLASI 2D (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;
-
Tutorial Komputer Grafik
Oleh : Moh. Furqan, S. Kom.STT Nurul Jadid Paiton Probolinggo
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 :
-
Tutorial Komputer Grafik
Oleh : Moh. Furqan, S. Kom.STT Nurul Jadid Paiton Probolinggo
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.
Lakukan hal yang sama seperti prosedur obyek2D, untuk membuat prosedur tak
standar Matrik Translasi sebagai berikut:
procedure TForm1.MatrikTranlasi2D(Sender: TObject; var Tv : Matrik33; a, b
: real);
begin
a := StrToFloat(eNilaiA.Text);
b := StrToFloat(eNilaiB.Text);
Tv[1,1]:=1; Tv[1,2]:=0; Tv[1,3]:=a;
Tv[2,1]:=0; Tv[2,2]:=1; Tv[2,3]:=b;
Tv[3,1]:=0; Tv[3,2]:=0; Tv[3,3]:=1;
end;
Variabel Tv, a, b didaftarkan sebagai variable global dan bertipe matrik33dan real.
Buatlah prosedur tak standar untuk perkalian matrik dengan obyek, ketikkan kode
di antara Begin dan End, sebagai berikut :
procedure MatrikKaliTransformasiObyek2D(var Obyek: Matrik3N; Tr :
Matrik33);
var
-
Tutorial Komputer Grafik
Oleh : Moh. Furqan, S. Kom.STT Nurul Jadid Paiton Probolinggo
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] + Tr[i,j] * Obyek[j,k];
end;
Obyek := Hasil;
end;
Dalam hal ini prosedur tidak perlu di daftarkan pada bagian type karena tidak
memanggil nilai.
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.
Selanjutnya buatlah prosedur standar untuk tombol translasi, ketikkan kode di
antara Begin dan End, sebagai berikut :
procedure TForm1.btTranslasiClick(Sender: TObject);
begin
-
Tutorial Komputer Grafik
Oleh : Moh. Furqan, S. Kom.STT Nurul Jadid Paiton Probolinggo
Obyek2D(Sender,Obyek);
MatrikTranlasi2D(Sender,Tv,a,b);
MatrikKaliTransformasiObyek2D(Obyek,Tv);
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 btTranslasi adalah sebuah komponen edit, kemudian prosedur akan
memanggil obyek2D, matrikTranslasi2D, MatrikKaliTransformasiObyek2D 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;
eNilaiA.Text :='';
eNilaiB.Text :='';
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;
-
Tutorial Komputer Grafik
Oleh : Moh. Furqan, S. Kom.STT Nurul Jadid Paiton Probolinggo
Kemudian jalankan program dengan menekan F9 dan perhatikan hasilnya.
Awal obyek
Titik koordinat obyek dan koordinat (a,b) tranlasi obyek
Obyek setelah diTranslasi