latihan-3-1.pdf

6
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;

Upload: nuryahman

Post on 13-Sep-2015

216 views

Category:

Documents


0 download

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