Modul Grafika Komputer

download Modul Grafika Komputer

of 77

description

membahas praktikum grafika komputer

Transcript of Modul Grafika Komputer

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 1

    MODUL I

    MENGENAL DELPHI DAN PENGANTAR GRAFIKA

    I. TUJUAN

    1. Mahasiswa dapat mengenal Elemen IDE Delphi

    2. Mahasiswa dapat mengenal grafika komputer

    3. Mahasiswa mampu membuat aplikasi sederhana

    4. Mahasiswa mampu menambahkan komponen kedalam form

    II. TEORI

    Delphi adalah suatu program berbasis bahasa Pascal yang berjalan dalam lingkungan

    Windows. Delphi juga merupakan sebuah perangkat lunak pengembangan program yang

    terintegrasi, yang meliputi fungsi untuk penulisan program, kompilasi sampai dengan

    pelacakan kesalahan (debugging). Delphi adalah suatu bahasa pemrograman yang telah

    memanfaatkan metode pemrograman Object Oriented Programming (OOP).

    Secara default elemen IDE (Integrated Development Environment) terdiri atas

    beberapa bagian sebagaimana terlihat pada gambar 1.1, yaitu Menu Bar, Tool Bar,

    Component Palette, Object Treeview, Object Inspector, Form Designer, dan Code Editor.

    Gambar 1.1 IDE Delphi

    1. Menu Bar digunakan untuk memilih perintah (Command) yang diberikan kepada

    Delphi untuk melakukan suatu pekerjaan tertentu, misalnya menyimpan

    file,menampilkan elemen tertentu, menginstal komponen baru dan lain-lain.

    Tool Bar

    Object

    TreeView

    Object

    Inspector

    Form

    Designer

    Code

    Explorer

    Component

    Palette

    Menu bar

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 2

    2. Tool Bar berisi icon (gambar kecil) yang mengilustrasikan perintah yang diberikan,

    misalnya icon disket untuk perintah menyimpan file, icon buku untuk perintah

    bantuan(Help).

    3. Component Palette berisi icon yang menunjukan komponen yang dapat ditambahkan

    ke dalam form yang kita buat, baik komponent visual seperti button (tombol), text

    box, combo box dan lain-lain.

    4. Form Designer merupakan jendela untuk mendesain tampilan aplikasi yang kita buat.

    Bentuk dasar dari tampilan program yang dibuat menggunakan Delphi ini adalah

    berbentuk form. Didalam form ini dapat ditempatkan komponen-komponen visual dan

    non visual.

    5. Code Explorer digunakan untuk menambahkan dan mengedit program yang kita buat.

    Dalam Delphi, beberapa bagian program akan dibuat secara otomatis ketika kita

    memulai membuat sebuah proyek. Ada juga bagian program yang akan dibuat

    otomatis ketika kita buat suatu event pada komponent yang ditambahkan ke form.

    6. Object TreeView berisi daftar komponen (disebut juga objek) yang kita tambahkan

    dalam form yang dibuat di Form Editor.

    7. Object Inspector Berisi daftar property dan event dari komponen yang sedang dipilih

    di form editor. Object Inspector mempunyai 2 buah tab yaitu tab Properties dan

    Events. Property komponen dapat diubah dengan mengetikan pada bagian kanan dari

    object inspector. Setiap komponen dapat memiliki event untuk menentukan

    perilakunya apabila dilakukan hal tertentu pada komponen tersebut.

    Komponen pada Delphi terdiri atas komponen visual dan komponen non visual.

    Komponen visual akan ditampilkan apa adanya dalam form yang dibuat, sedangkan

    komponen visual tidak terlihat pada waktu dieksukusi.

    Beberapa komponen yang sering digunakan adalah:

    Tabel 1.1. Tabel Komponen

    Komponen Icon Palet Keterangan

    Label

    Standar Menambahkan tulisan dalam form

    Button

    Standar Berupa tombol tekan dengan tulisan

    diatasnya

    Edit

    Standar Kotak isian untuk mengisikan teks atau

    angka biasanya untuk input program

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 3

    Image

    Additional Untuk menampilkan gambar yang dimuat

    dari file

    Timer

    System Untuk membuat event yang berulang

    setiap rentang waktu tertentu.

    OpenPictureDialog

    Dialogs Untuk menampilkan kotak dialog untuk

    memilih file citra yang akan dimuat

    Grafika komputer merupakan suatu cabang bidang ilmu yang mempelajari bagaimana

    membuat gambar/grafik dan bagaimana memanipulasinya menggunakan komputer. Grafika

    komputer merupakan bagian yang paling menarik di bidang ilmu komputer, karena selain

    harus mengerti bahasa dan logika pemrograman juga dibutuhkan kemampuan analisis serta

    pemahaman matematis.

    Gafika komputer bertujuan menghasilkan citra (lebih tepat disebut grafik/picture)

    dengan primitif-primitif geometri seperti garis, lingkaran, persegi, dan lain sebagainya.

    Primitif-primitif geometri tersebut memerlukan data deskriptif untuk melukis elemen-elemen

    gambar. Contoh data deskriptif adalah koordinat titik, panjang garis, jari-jari lingkaran, tebal

    garis, dan warna.

    Pada pemrograman Delphi dapat dibangun bentuk-bentuk bidang tertentu secara

    langsung tanpa merangkaikan titik. Obyek canvas tetap digunakan untuk menempatkan

    gambar yang akan dibuat. Selain menempatkan gambar, obyek canvas juga memiliki properti

    untuk warna, ukuran garis, dan jenis font.

    Kode program canvas adalah:

    Canvas.Moveto(x,y) : digunakan untuk menempatkan posisi awal garis

    Canvas.Lineto(x,y) : digunakan untuk menempatkan posisi akhir garis

    Praktikum 1

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini, dengan menambahkan objek Buton

    4. Pada objek Button1 atur properti caption ganti dengan Garis.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 4

    5. Klik 2x pada Button1(Garis), setelah muncul halaman CodeEditor, maka tuliskan

    kode progam berikut:

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    canvas.moveto(10,10);

    canvas.lineto(100,100);

    end;

    end.

    6. Eksekusi program di atas dengan menekan tombol F9.

    Praktikum 2

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini, dengan menambahkan objek Buton

    4. Pada objek Button1 atur properti caption ganti dengan Garis Horizontal.

    5. Klik 2x pada Button1(Garis Horizontal), setelah muncul halaman CodeEditor, maka

    tuliskan kode progam berikut:

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 5

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    canvas.moveto(10,100);

    canvas.lineto(100,100);

    end;

    end.

    6. Eksekusi program di atas dengan menekan tombol F9.

    7. Perhatikan hasil bentuk garisnya.

    Praktikum 3

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini, dengan menambahkan objek Buton

    4. Pada objek Button1 atur properti caption ganti dengan Garis Vertikal.

    5. Klik 2x pada Button1(Garis Vertikal), setelah muncul halaman CodeEditor, maka

    tuliskan kode progam berikut:

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 6

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    canvas.moveto(200,100);

    canvas.lineto(200,300);

    end;

    end.

    6. Eksekusi program di atas dengan menekan tombol F9.

    Praktikum 4

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini, dengan menambahkan objek Buton

    4. Pada objek Button1 atur properti caption ganti dengan Rectangle.

    5. Klik 2x pada Button1(Rectangle), setelah muncul halaman CodeEditor, maka tuliskan

    kode progam berikut:

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    canvas.Rectangle(10,30,300,150);

    end;

    end.

    6. Eksekusi program di atas dengan menekan tombol F9.

    Praktikum 5

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini, dengan menambahkan objek Buton

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 7

    4. Pada objek Button1 atur properti caption ganti dengan Lingkaran.

    5. Klik 2x pada Button1(Lingkaran), setelah muncul halaman CodeEditor, maka tuliskan

    kode progam berikut:

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    canvas.Ellipse(310,310,250,250);

    end;

    end.

    6. Eksekusi program di atas dengan menekan tombol F9.

    Tugas

    1. Buat dan rancanglah kode program untuk menampilkan gambar seperti berikut:

    a. Rumah

    b. Mobil

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 8

    MODUL II

    MENGGAMBAR GARIS DENGAN METODE DDA, BRESENHAM

    DAN POLINOM

    I. TUJUAN

    1. Mahasiswa dapat membuat garis menggunakan metode DDA

    2. Mahasiswa dapat membuat garis menggunakan metode Bresenham

    3. Mahasiswa dapat membuat garis dengan metode polinom

    II. TEORI

    Algoritma DDA adalah algoritma pembentukan garis berdasarkan perhitungan x dan

    y, menggunakan rumus y = m. x. Garis dibuat dengan menentukan dua endpoint yaitu titik

    awal dan titik akhir. Setiap koordinat titik yang membentuk garis diperoleh dari perhitungan,

    kemudian dikonversikan menjadi nilai integer.

    Digital Diferensial Analyser (DDA) adalah algoritma pembentukan garis berdasarkan

    perhitungan dx maupun dy, menggunakan rumus

    dy = m . dx

    Garis dibuat menggunakan dua endpoint, yaitu titik awal dan titik akhir. Setiap koordinat titik

    yang membentuk garis diperoleh dari perhitungan, kemudian dikonversikan menjadi nilai

    integer. Langkah Pembentukan Garis DDA:

    a) Tentukan dua titik yang akan dihubungkan dalam pembentukan garis

    b) Tentukan titik awal (x0,y0) dan titik akhir (x1,y1).

    c) Hitung dx = x1- x0dan dy = y1 y0

    d) Tentukan step = max( |dx| , |dy| )

    e) Hitung penambahan koordinat pixel XInc = dx / step dan YInc = dy / step

    f) Koordinat selanjutnya (x+XInc, y+yInc)

    g) Posisi pada layar ditentukan dengan pembulatan nilai koordinat tersebut

    h) Ulangi langkah f dan g untuk menentukan posisi pixel berikutnya. sampai x=x1 dan

    y=y1.

    Algoritma Bressenham mengembangkan algoritma klasik yang lebih menarik, karena

    hanya menggunakan perhitungan matematika dengan bilangan integer. Dengan demikian

    tidak perlu membulatkan nilai posisi setiap pixel setiap waktu. Algoritma garis Bressenhem

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 9

    disebut juga midpoint line algorithm adalah algoritma konversi penambahan nilai integer

    yang juga dapat diadaptasi untuk menggambar sebuah lingkaran.

    Langkah-Langkah membentuk garis menggunakan algoritma Bressenhem:

    a. Tentukan dua titik yang akan dihubungkan.

    b. Tentukan titik awal (X0, Y0) dan titik akhir (X1,Y1).

    c. Hitung dx, dy, 2dy, dan 2dy-2dx.

    d. Hitung parameter p0 = 2dy-dx

    e. Untuk setiap xk sepanjang jalur garis, dimulai dengan k = 0

    - bila pk

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 10

    Bresenham, dan Polinom

    Label2 Caption X1

    Label3 Caption Y1

    Label4 Caption X2

    Label5 Caption Y2

    Label6 Caption Xawal

    Label7 Caption Xakhir

    Label8 Caption Nilai A =

    Label9 Caption Nilai B =

    Edit1 Name edX1

    Text Kosongkan

    Edit2 Name edY1

    Text Kosongkan

    Edit3 Name edX2

    Text Kosongkan

    Edit4 Name edY2

    Text Kosongkan

    Edit5 Name edXAwal

    Text Kosongkan

    Edit6 Name edXAkhir

    Text Kosongkan

    Edit7 Name edA

    Text Kosongkan

    Edit8 Name edB

    Text Kosongkan

    Button1 Name DDA

    Caption DDA

    Button2 Name Bresenham

    Caption Bresenham

    Button3 Name Polinom

    Caption Polinom

    Button4 Name Ulang

    Caption Ulang

    Button5 Name Keluar

    Caption Keluar

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 11

    5. Kemudian pilih Objek Form1, pada event OnPaint klik 2x disebelah kanannya,

    kemudian ketikan kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    var

    x,y:integer;

    begin

    // sumbu x

    for x := 0 to ClientWidth do

    Canvas.Pixels[x,ClientHeight div 2]:= clRed;

    // sumbu y

    for y := 0 to ClientHeight do

    Canvas.Pixels[ClientWidth div 2,y]:= clBlue;

    end;

    6. Klik 2x pada Button1(DDA), setelah muncul halaman CodeEditor, maka tuliskan

    kode progam berikut:

    procedure TForm1.DDAClick(Sender: TObject);

    var

    k,delta,x0,y0,x1,y1,x2,y2: Integer;

    xNaik,yNaik,x,y:real;

    begin

    // lebar dan tinggi layar maks (1)

    x0 := ClientWidth div 2; y0 := ClientHeight div 2;

    //inputan awal (2)

    x1 := StrToInt(edX1.Text); x2 := StrToInt(edX2.Text);

    y1 := StrToInt(edY1.Text); y2 := StrToInt(edY2.Text);

    for k := 0 to ClientWidth do //sumbu x dan y (3)

    Canvas.Pixels[k,y0]:= clGreen;

    for k := 0 to ClientHeight do

    Canvas.Pixels[x0,k]:= clRed;

    delta := ABS(x2-x1); //persamaan metode DDA (4)

    if abs(y2-y1) > delta then

    delta := abs(y2-y1);

    xNaik := (x2-x1)/delta;

    yNaik := (y2-y1)/delta;

    x := x1; y := y1;

    for k := 1 to delta do

    begin //menggambar garis (5)

    Canvas.Pixels[Trunc(x0 + x), Trunc(y0 -y)]:=clBlue;

    x := x + xNaik;

    y := y + yNaik;

    end;end;

    7. Klik 2x pada Button2(Bresenham), setelah muncul halaman CodeEditor, maka

    tuliskan kode progam berikut:

    procedure TForm1.BresenhamClick(Sender: TObject);

    var

    x,y,k,e,deltay,deltax,x0,y0,x1,x2,y1,y2 : Integer;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 12

    begin

    x0 := ClientWidth div 2; y0 := ClientHeight div 2;

    x1 := StrToInt(edX1.Text); x2 := StrToInt(edX2.Text);

    y1 := StrToInt(edY1.Text); y2 := StrToInt(edY2.Text);

    deltax :=abs(x2-x1); deltay :=abs(y2-y1);

    e := (2 * deltay)-deltax; x := x1; y := y1;

    for k := 1 to deltax do

    begin

    canvas.Pixels[x0+x,y0-y]:=clBlue;

    if e > 0 then

    begin

    y := y + 1; e := e + 2 * (deltay-deltax);

    end

    else e := e + (2 * deltay); x := x + 1;

    end;

    end;

    8. Klik 2x pada Button3(Polinom), setelah muncul halaman CodeEditor, maka tuliskan

    kode progam berikut:

    procedure TForm1.PolinomClick(Sender: TObject);

    var

    x,xAwal,xAkhir,a,b,x0,y0,y: Integer;

    begin

    x0 := ClientWidth div 2; y0 := ClientHeight div 2;

    a := StrToInt(edA.Text); b := StrToInt(edB.Text);

    xAwal := StrToInt(edXAwal.Text); xAkhir := StrToInt(edXAkhir.Text);

    for x := xAwal to xAkhir do

    begin

    y := (a * x) + b;

    Canvas.Pixels[x0+x, Trunc(y0-y)]:= clGreen;

    end;

    end;

    9. Klik 2x pada Button4(Ulang), setelah muncul halaman CodeEditor, maka tuliskan

    kode progam berikut:

    procedure TForm1.UlangClick(Sender: TObject);

    begin

    edX1.Text:='';

    edY1.Text:='';

    edX2.Text:='';

    edY2.Text:='';

    edXAwal.Text:='';

    edXAkhir.Text:='';

    edA.Text:='';

    edB.Text:='';

    edX1.SetFocus;

    end;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 13

    10. Klik 2x pada Button5(Keluar), setelah muncul halaman CodeEditor, maka tuliskan

    kode progam berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    CLOSE;

    end;

    11. Eksekusi program di atas dengan menekan tombol F9.

    Praktikum 2

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 14

    Caption Lingkaran Polinom

    Width 340

    Height 135

    Label1 Caption Menggambar Lingkaran

    Polinom Dengan Titik Pusat

    (0,0)

    Label2 Caption Radius

    Edit1 Name eR

    Caption Dikosongan

    Button1 Name Button1

    Caption 8 Warna

    Button2 Name Button2

    Caption Ulang

    Button3 Name Button3

    Caption Keluar

    5. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    var

    x0,y0:integer;

    begin

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    end;

    6. Kemudian pilih Objek Form1, pada event OnPaint klik 2x disebelah kanannya,

    kemudian ketikan kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    var

    k,x0,y0:integer;

    begin

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    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;

    end;

    7. Kemudian pilih Objek Button1(8 Warna), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.Button1Click(Sender: TObject);

    var

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 15

    r,x0,y0:integer;

    x,y:real;

    begin

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    r := StrToInt(eR.Text); // inputan melalui komponen edit

    x := 0;

    Repeat

    y := sqrt((sqr(r))-(sqr(x))); // persamaan polinom

    Canvas.Pixels[trunc(x0+x),trunc(y0 -y)]:= clRed;

    Canvas.Pixels[trunc(x0+x) ,trunc(y0+y)]:= clBlue;

    Canvas.Pixels[trunc(x0-x),trunc(y0-y)]:= clPurple;

    Canvas.Pixels[trunc(x0-x),trunc(y0+y)]:= clNavy;

    Canvas.Pixels[trunc(x0+y),trunc(y0 -x)]:= clBlack;

    Canvas.Pixels[trunc(x0+y),trunc(y0+x)]:= clGreen;

    Canvas.Pixels[trunc(x0-y),trunc(y0-x)]:= clYellow;

    Canvas.Pixels[trunc(x0-y),trunc(y0+x)]:= clTeal;

    x := x + 0.5;

    until x >= 0.707 * r; // batas scan

    end;

    8. Kemudian pilih Objek Button2(Ulang), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.Button2Click(Sender: TObject);

    begin

    eR.Text := '';

    eR.SetFocus;

    end;

    9. Kemudian pilih Objek Button3(Keluar), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.Button3Click(Sender: TObject);

    begin

    close;

    end;

    10. Eksekusi program di atas dengan menekan tombol F9.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 16

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 17

    MODUL III

    MENGGAMBAR TRANSLASI DAN ROTASI OBJEK 2D

    I. TUJUAN

    1. Mahasiswa dapat menggambar objek 2D

    2. Mahasiswa dapat melakukan proses translasi 2D

    3. Mahasiswa dapat melakukan proses Rotasi objek 2D

    II. TEORI

    Grafika komputer merupakan bidang yang menarik minat banyak orang. Salah sub

    bagian dari grafika komputer adalah pemodelan objek (object modelling). Dalam pemodelan

    objek dua dimensi (2D), didapati berbagai objek dapat dimodelkan menurut kondisi tertentu,

    objek yang dimodelkan itu perlu dimodifikasi.

    Pemodifikasian objek ini dapat dilakukan dengan melakukan berbagai operasi fungsi

    atau operasi transformasi geometri. Contoh transformasi geometri adalah translasi,

    penskalaan, putaran (rotasi), balikan, shearing dan gabungan

    Transformasi translasi merupakan suatu operasi yang menyebabkan perpindahan

    objek 2D dari satu tempat ke tempat yang lain. Perubahan ini berlaku dalam arah yang sejajar

    dengan sumbu X dan sumbu Y. Translasi dilakukan dengan penambahan translasi pada suatu

    titik koordinat dengan translation vector, yaitu (tx,ty), dimana tx adalah translasi menurut

    sumbu x dan ty adalah translasi menurut sumbu y. Koordinat baru titik yang ditranslasi dapat

    diperoleh dengan menggunakan rumus :

    x = x + tx

    y = y + ty

    (x,y) = titik asal sebelum translasi

    (x,y) = titik baru hasil translasi

    Translasi adalah transformasi dengan bentuk yang tetap, memindahkan objek apa adanya.

    Setiap titik dari objek akan ditranslasikan dengan besaran yang sama.

    Penskalaan adalah suatu operasi yang membuat suatu objek berubah ukurannya baik

    menjadi mengecil ataupun membesar secara seragam atau tidak seragam tergantung pada

    faktor penskalaan (scalling factor) yaitu (sx,sy) yang diberikan. sx adalah faktor penskalaan

    menurut sumbu x dan sy faktor penskalaan menurut sumbu y. Koordinat baru diperoleh

    dengan rumus:

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 18

    x = x * sx

    y = y * sy

    (x,y) = titik awal sebelum diskala

    (x,y) = titik setelah diskala

    Nilai lebih dari 1 menyebabkan objek diperbesar, sebaliknya bila nilai lebih kecil dari

    1, maka objek akan diperkecil. Bila (sx,sy) mempunyai nilai yang sama, maka skala disebut

    dengan uniform scalling.

    Putaran adalah suatu operasi yang menyebabkan objek bergerak berputar pada titik

    pusat atau pada sumbu putar yang dipilih berdasarkan sudut putaran tertentu. Untu

    melakukan rotasi diperlukan sudut rotasi dan pivot point (xp,yp) dimana objek akan

    dirotasi.Putaran biasa dilakukan pada satu titik terhadap sesuatu sumbu tertentu misalnya

    sumbu x, sumbu y atau garis tertentu yang sejajar dengan sembarang sumbu tersebut. Titik

    acuan putaran dapat sembarang baik di titik pusat atau pada titik yang lain.

    Aturan dalam geometri, jika putaran dilakukan searah jarum jam, maka nilai sudutnya

    adalah negatif. Sebaliknya, jika dilakukan berlawanan arah dengan arah jarum jam nilai

    sudutnya adalah positif.

    Rotasi dapat dinyatakan dengan:

    Praktikum 1

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 19

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Translasi Segitiga

    Width 340

    Height 135

    Label1 Caption Menggambara TRANSLASI

    Dasar

    Label2 Caption Nilai A

    Label3 Caption Nilai B

    Edit1 Name eNilaiA

    Edit2 Name eNilaiB

    Button1 Name Button1

    Caption Segitiga

    Button2 Name Button2

    Caption Translasi

    Button3 Name Ulang

    Caption Ulang

    Button4 Name Keluar

    Caption Keluar

    StringGrid1 Name StringGrid1

    FixedCol 1

    Fixed Row 0

    RowCount 2

    ColCount 4

    Options goEditing True

    Catatan:

    Komponen StringGrid1 bisa diakses pada Tab Control Additional

    pada komponen Pallete

    5. Selanjutnya tekan F12 untuk berpindah ke jendela code editor dan buatlah deklarasi

    konstanta dan matrik dibawah uses, sebagai berikut:

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, Grids, StdCtrls;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 20

    //deklarasi konstanta

    Const N = 3;

    //deklarasi matriks

    Type

    Matrik33 = array[1..3,1..3] of Real;

    Matrik3N = array[1..3,1..N] of Real;

    6. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    // lebar layar dan tinggi layar maksimum

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    end;

    7. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    var

    k:integer;

    begin

    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;

    end;

    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.

    8. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnShow klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormShow(Sender: TObject);

    begin

    with StringGrid1 do

    begin

    Cells[0,0]:='X';

    Cells[0,1]:='Y';

    end;

    end;

    9. Kemudian ketiklah kode program berikut dibawah kode program FormShow:

    procedure TForm1.Obyek2D(Sender: TObject; var Obyek:Matrik3N);

    var

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 21

    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;

    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;

    procedure MatrikKaliTransformasiObyek2D(var Obyek: Matrik3N; Tr :

    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] + Tr[i,j] * Obyek[j,k];

    end;

    Obyek := Hasil;

    end;

    10. Kemudian tambahkan kode program berikut dibawah type

    procedure Obyek2D(Sender: TObject; var Obyek:Matrik3N);

    procedure MatrikTranlasi2D(Sender: TObject; var Tv : Matrik33; a, b

    : real);

    11. Kemudian tambahkan juga kode progam berikut dibawah var

    var

    Form1: TForm1;

    x0,y0:integer;

    Obyek: Matrik3N;

    Tv : Matrik33;

    a, b: real;

    12. Kemudian pilih Objek Button1(Segitiga), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.Button1Click(Sender: TObject);

    begin

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 22

    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;

    13. Kemudian pilih Objek Button2(Translasi), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.Button2Click(Sender: TObject);

    begin

    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;

    14. Kemudian pilih Objek ButtonUlang(Ulang), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.UlangClick(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;

    15. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    Application.Terminate;

    end;

    16. Eksekusi program di atas dengan menekan tombol F9.

    17. Coba masukan angka pada X (10,50,10) dan pada Y (10,10,50) pada tranlasi A dan B

    (100,100), kemudian klik tombol segitiga dan klik tombol tranlasi.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 23

    Praktikum 2

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Rotasi Segitiga

    Width 340

    Height 135

    Label1 Caption Menggambar ROTASI pada

    Titik (0,0)

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 24

    Label2 Caption Sudut

    Edit1 Name eSudut

    Button1 Name ButtonSegitiga

    Caption Segitiga

    Button2 Name ButtonRotasi

    Caption Rotasi

    Button3 Name ButtonKeluar

    Caption Keluar

    StringGrid1 Name StringGrid1

    FixedCol 1

    Fixed Row 0

    RowCount 2

    ColCount 4

    Options goEditing True

    Catatan:

    Komponen StringGrid1 bisa diakses pada Tab Control Additional

    pada komponen Pallete

    5. Selanjutnya tekan F12 untuk berpindah ke jendela code editor dan buatlah deklarasi

    konstanta dan matrik dibawah uses, sebagai berikut:

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, Grids, StdCtrls;

    //deklarasi konstanta

    Const N = 3;

    //deklarasi matriks

    Type

    Matrik33 = array[1..3,1..3] of Real;

    Matrik3N = array[1..3,1..N] of Real;

    6. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    // lebar layar dan tinggi layar maksimum

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    end;

    7. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 25

    var

    k:integer;

    begin

    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;

    end;

    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.

    8. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnShow klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormShow(Sender: TObject);

    begin

    with StringGrid1 do

    begin

    Cells[0,0]:='X';

    Cells[0,1]:='Y';

    end;

    end;

    9. Kemudian ketiklah kode program berikut dibawah kode program FormShow:

    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;

    procedure TForm1.MatrikRotasi2D(Sender: TObject; var R : Matrik33; sudut

    : real);

    var

    Radian : Real;

    begin

    sudut := StrToFloat(eSudut.Text);

    Radian := sudut / 180 * 3.14;

    R[1,1]:=cos(Radian); R[1,2]:=sin(Radian); R[1,3]:=0;

    R[2,1]:=sin(Radian); R[2,2]:=cos(Radian); R[2,3]:=0;

    R[3,1]:=0; R[3,2]:=0; R[3,3]:=1;

    end;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 26

    procedure MatrikKaliTransformasiObyek2D(var Obyek: Matrik3N; R:

    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] + R[i,j] * Obyek[j,k];

    end;

    Obyek := Hasil;

    end;

    10. Kemudian tambahkan kode program berikut dibawah type

    procedure Obyek2D(Sender: TObject; var Obyek:Matrik3N);

    procedure MatrikRotasi2D(Sender: TObject; var R : Matrik33; sudut: real);

    11. Kemudian tambahkan juga kode progam berikut dibawah var

    var

    Form1: TForm1;

    x0,y0:integer;

    Obyek: Matrik3N;

    R : Matrik33;

    a, b,sudut: real;

    12. Kemudian pilih Objek ButtonSegitiga(Segitiga), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.Button1Click(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;

    13. Kemudian pilih Objek ButtonRotasi(Rotasi), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.ButtonRotasiClick(Sender: TObject);

    begin

    Obyek2D(Sender,Obyek);

    MatrikRotasi2D(Sender,R,sudut);

    MatrikKaliTransformasiObyek2D(Obyek,R);

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 27

    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;

    14. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    Application.Terminate;

    end;

    15. Eksekusi program di atas dengan menekan tombol F9.

    16. Coba masukan angka pada X (10,100,10) dan pada Y (10,10,100) pada sudut(180),

    kemudian klik tombol segitiga dan klik tombol Rotasi.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 28

    MODUL IV

    MENGGAMBAR SCALING DAN FLIPPING OBJEK 2D

    I. TUJUAN

    1. Mahasiswa dapat menggambar objek 2D

    2. Mahasiswa dapat melakukan proses penskalaan 2D

    3. Mahasiswa dapat melakukan proses Pencerminan objek 2D

    II. TEORI

    Penskalaan adalah suatu operasi yang membuat suatu objek berubah ukurannya baik

    menjadi mengecil ataupun membesar secara seragam atau tidak seragam tergantung pada

    faktor penskalaan (scalling factor) yaitu (sx,sy) yang diberikan. sx adalah faktor penskalaan

    menurut sumbu x dan sy faktor penskalaan menurut sumbu y. Koordinat baru diperoleh

    dengan rumus:

    x = x * sx

    y = y * sy

    (x,y) = titik awal sebelum diskala

    (x,y) = titik setelah diskala

    Nilai lebih dari 1 menyebabkan objek diperbesar, sebaliknya bila nilai lebih kecil dari

    1, maka objek akan diperkecil. Bila (sx,sy) mempunyai nilai yang sama, maka skala disebut

    dengan uniform scalling.

    Operasi pencerminan merupakan operasi geometri yang tidak mengalami perubahan

    ukuran citra.Operasi ini hanya mengakibatkan adanya perubahan orientasi citra, baik secara

    horizontal, vertikal maupun keduanya.

    Praktikum 1

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 29

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Scalling Segitiga

    Width 340

    Height 135

    Label1 Caption Menggambar SCALLING pada

    Titik (0,0)

    Label2 Caption X

    Label3 Caption Y

    Edit1 Name eX

    Edit2 Name eY

    Button1 Name ButtonSegitiga

    Caption Segitiga

    Button2 Name ButtonScalling

    Caption Scalling

    Button3 Name ButtonKeluar

    Caption Keluar

    StringGrid1 Name StringGrid1

    FixedCol 1

    Fixed Row 0

    RowCount 2

    ColCount 4

    Options goEditing True

    Catatan:

    Komponen StringGrid1 bisa diakses pada Tab Control Additional

    pada komponen Pallete

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 30

    5. Selanjutnya tekan F12 untuk berpindah ke jendela code editor dan buatlah deklarasi

    konstanta dan matrik dibawah uses, sebagai berikut:

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, Grids, StdCtrls;

    //deklarasi konstanta

    Const N = 3;

    //deklarasi matriks

    Type

    Matrik33 = array[1..3,1..3] of Real;

    Matrik3N = array[1..3,1..N] of Real;

    6. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    // lebar layar dan tinggi layar maksimum

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    end;

    7. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    var

    k:integer;

    begin

    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;

    end;

    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.

    8. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnShow klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormShow(Sender: TObject);

    begin

    with StringGrid1 do

    begin

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 31

    Cells[0,0]:='X';

    Cells[0,1]:='Y';

    end;

    end;

    9. Kemudian ketiklah kode program berikut dibawah kode program FormShow:

    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;

    procedure TForm1.MatrikScaling2D(Sender: TObject; var S : Matrik33; sx,sy

    : real);

    begin

    sx := StrToFloat(eX.Text);

    sy := StrToFloat(eY.Text);

    S[1,1]:=sx; S[1,2]:=0; S[1,3]:=0;

    S[2,1]:=0; S[2,2]:=sy; S[2,3]:=0;

    S[3,1]:=0; S[3,2]:=0; S[3,3]:=1;

    end;

    procedure MatrikKaliTransformasiObyek2D(var Obyek: Matrik3N; S :

    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] + S[i,j] * Obyek[j,k];

    end;

    Obyek := Hasil;

    end;

    10. Kemudian tambahkan kode program berikut dibawah type

    procedure Obyek2D(Sender: TObject; var Obyek:Matrik3N);

    procedure MatrikScaling2D(Sender: TObject; var S : Matrik33; sx,sy: real);

    11. Kemudian tambahkan juga kode progam berikut dibawah var

    var

    Form1: TForm1;

    x0,y0:integer;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 32

    Obyek: Matrik3N;

    S : Matrik33;

    a, b,sx,sy: real;

    12. Kemudian pilih Objek ButtonSegitiga(Segitiga), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonSegitigaClick(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;

    13. Kemudian pilih Objek ButtonScalling(Scalling), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonScallingClick(Sender: TObject);

    begin

    Obyek2D(Sender,Obyek);

    MatrikScaling2D(Sender,S,sx,sy);

    MatrikKaliTransformasiObyek2D(Obyek,S);

    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;

    14. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    Application.Terminate;

    end;

    15. Eksekusi program di atas dengan menekan tombol F9.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 33

    Praktikum 2

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Pencerminan Segitiga

    Width 340

    Height 135

    Label1 Caption Menggambar Pencerminan

    Sumbu X dan Sumbu Y

    Button1 Name ButtonSegitiga

    Caption Segitiga

    Button2 Name ButtonCerminX

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 34

    Caption Cermin X

    Button3 Name ButtonCerminY

    Caption Cermin Y

    Button4 Name ButtonKeluar

    Caption Keluar

    StringGrid1 Name StringGrid1

    FixedCol 1

    Fixed Row 0

    RowCount 2

    ColCount 4

    Options goEditing True

    Catatan:

    Komponen StringGrid1 bisa diakses pada Tab Control Additional

    pada komponen Pallete

    5. Selanjutnya tekan F12 untuk berpindah ke jendela code editor dan buatlah deklarasi

    konstanta dan matrik dibawah uses, sebagai berikut:

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, Grids, StdCtrls;

    //deklarasi konstanta

    Const N = 3;

    //deklarasi matriks

    Type

    Matrik33 = array[1..3,1..3] of Real;

    Matrik3N = array[1..3,1..N] of Real;

    6. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    // lebar layar dan tinggi layar maksimum

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    end;

    7. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    var

    k:integer;

    begin

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 35

    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;

    end;

    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.

    8. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnShow klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormShow(Sender: TObject);

    begin

    with StringGrid1 do

    begin

    Cells[0,0]:='X';

    Cells[0,1]:='Y';

    end;

    end;

    9. Kemudian ketiklah kode program berikut dibawah kode program FormShow:

    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;

    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;

    procedure MatrikKaliTransformasiObyek2D(var Obyek: Matrik3N; Mx :

    Matrik33);

    var

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 36

    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;

    10. Kemudian tambahkan kode program berikut dibawah type

    procedure Obyek2D(Sender: TObject; var Obyek:Matrik3N);

    11. Kemudian tambahkan juga kode progam berikut dibawah var

    var

    Form1: TForm1;

    x0,y0:integer;

    Obyek: Matrik3N;

    Mx,My : Matrik33;

    12. Kemudian pilih Objek ButtonSegitiga(Segitiga), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonSegitigaClick(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;

    13. Kemudian pilih Objek ButtonCerminX(Cermin X), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonCerminXClick(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]));

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 37

    end;

    14. Kemudian pilih Objek ButtonCerminY(Cermin Y), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonCerminYClick(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;

    15. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    Application.Terminate;

    end;

    16. Eksekusi program di atas dengan menekan tombol F9.

    Praktikum 3

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 38

    3. Rancanglah Form seperti gambar dibawah ini

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Shearing

    Width 340

    Height 135

    Label1 Caption Menggambar Shearing

    Label2 Caption Nilai A =

    Label3 Caption Nilai B =

    Button1 Name ButtonSegiempat

    Caption Segi Empat

    Button2 Name ButtonShearing

    Caption Shearing

    Button3 Name ButtonUlang

    Caption Ulang

    Button4 Name ButtonKeluar

    Caption Keluar

    StringGrid1 Name StringGrid1

    FixedCol 1

    Fixed Row 0

    RowCount 2

    ColCount 5

    Options goEditing True

    Catatan:

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 39

    Komponen StringGrid1 bisa diakses pada Tab Control Additional

    pada komponen Pallete

    5. Selanjutnya tekan F12 untuk berpindah ke jendela code editor dan buatlah deklarasi

    konstanta dan matrik dibawah uses, sebagai berikut:

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, Grids, StdCtrls;

    //deklarasi konstanta

    Const N = 4; {Segi empat}

    //deklarasi matriks

    Type

    Matrik33 = array[1..3,1..3] of Real;

    Matrik3N = array[1..3,1..N] of Real;

    6. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    // lebar layar dan tinggi layar maksimum

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    end;

    7. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    var

    k:integer;

    begin

    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;

    end;

    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.

    8. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnShow klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormShow(Sender: TObject);

    begin

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 40

    with StringGrid1 do

    begin

    Cells[0,0]:='X';

    Cells[0,1]:='Y';

    end;

    end;

    9. Kemudian ketiklah kode program berikut dibawah kode program FormShow:

    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;

    procedure TForm1.MatrikShearing(Sender: TObject; var Sh : Matrik33; a,b :

    real);

    begin

    a := StrToFloat(eNilaiA.Text);

    b := StrToFloat(eNilaiB.Text);

    Sh[1,1]:=1; Sh[1,2]:=a; Sh[1,3]:=0;

    Sh[2,1]:=b; Sh[2,2]:=1; Sh[2,3]:=0;

    Sh[3,1]:=0; Sh[3,2]:=0; Sh[3,3]:=1;

    end;

    procedure MatrikKaliTransformasiObyek2D(var Obyek: Matrik3N; Sh :

    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] + Sh[i,j] * Obyek[j,k];

    end;

    Obyek := Hasil;

    end;

    10. Kemudian tambahkan kode program berikut dibawah type

    procedure Obyek2D(Sender: TObject; var Obyek:Matrik3N);

    procedure MatrikShearing(Sender: TObject; var Sh : Matrik33; a,b :

    real);

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 41

    11. Kemudian tambahkan juga kode progam berikut dibawah var

    var

    Form1: TForm1;

    x0,y0:integer;

    Obyek: Matrik3N;

    Sh: Matrik33;

    a,b :real;

    12. Kemudian pilih Objek ButtonSegiempat(Segi Empat), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonSegiempatClick(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,4]),trunc(Y0 - Obyek[2,4]));

    Canvas.MoveTo(trunc(X0 + Obyek[1,4]),trunc(Y0 - Obyek[2,4]));

    Canvas.LineTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1]));

    end;

    13. Kemudian pilih Objek ButtonShearing(Shearing), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonShearingClick(Sender: TObject);

    begin

    Obyek2D(Sender,Obyek);

    MatrikShearing(Sender,Sh,a,b);

    MatrikKaliTransformasiObyek2D(Obyek,Sh);

    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,4]),trunc(Y0 - Obyek[2,4]));

    Canvas.MoveTo(trunc(X0 + Obyek[1,4]),trunc(Y0 - Obyek[2,4]));

    Canvas.LineTo(trunc(X0 + Obyek[1,1]),trunc(Y0 - Obyek[2,1]));

    end;

    14. Kemudian pilih Objek ButtonUlang(Ulang), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.ButtonUlangClick(Sender: TObject);

    var i,j : Integer;

    begin

    Form1.Refresh;

    eNilaiA.Text :='';

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 42

    eNilaiB.Text :='';

    for i := 1 to 2 do

    for j := 1 to 4 do

    StringGrid1.Cells[j,i-1]:='';

    end;

    15. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    Application.Terminate;

    end;

    16. Eksekusi program di atas dengan menekan tombol F9.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 43

    MODUL V

    MENGGAMBAR KUBUS 3D DAN TRANSLASI 3D

    I. TUJUAN

    1. Mahasiswa dapat menggambar objek 3D

    2. Mahasiswa dapat membuat gambar kubus 3D

    3. Mahasiswa dapat melakukan proses translasi 3D

    II. TEORI

    Perbedaan 2 dimensi dan 3 dimensi adalah kedalaman. Kedalaman didefinisikan

    sebagai jarak antara viewer terhadap benda yang di lihat.Ini berarti berbeda dengan 2 dimensi

    yang hanya menggunakan 2 ukuran, yaitu panjang dan lebar, maka 3 dimensi menggunakan 3

    ukuran, yaitu panjang, lebar dan kedalaman. Secara geometri ketiga ukuran tersebut

    disimbolkan dengan sumbu x, y, dan z.

    Benda tiga dimensi disusun dari sekumpulan surface. Gambar di bawah memberikan

    contoh bagaimana surface digunakan untuk menyusun benda tiga dimensi. Surface dapat

    dibuat dari rangkaian Polygon.

    Polygon adalah bentuk yang disusun dari serangkaian garis yang terhubung satu

    dengan yang lain dan berbentuk kurva tertutup sehingga membentuk sebuah objek gambar.

    Titik sudut dari Polygon disebut vertex sedangkan garis penyusun Polygon disebut edge.

    Titik hasil transformasi dapat diperoleh melalui rumus dibawah ini disebut sebagai

    Affine Transformation.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 44

    Q = P * M +tr

    Dimana :

    Q = (Qx,Qy,Qz) menyatakan matriks 1x3 yang berisi titik hasil transformasi.

    P = (Px, Py, Pz) menyatakan matrik 1x3 yang berisi titik yang akan ditransformasi.

    Tr = (trx, try, trz) menyatakan matrik 1x3 yang berisi banyaknya pergeseran pada sumbu x, y

    dan z.

    M = Matriks mentransformasi berukuran 3x3.

    Transformasi translasi merupakan operasi yang menyebabkan perpindahan objek tiga

    dimensi dari satu tempat ke tempat yang lainnya. Perubahan ini berlaku dalam arah yang

    sejajar dengan sumbu x, y, z. dalam operasi translasi, setiap titik pada suatu entitas yang

    ditranslasi bergerak dalam jarak yang sama. Pergerakan tersebut dapat berlaku dalam arah

    sumbu x, y, z. Untuk mentranslasikan suatu titik (x,y,z) dengan pergeseran sebesar (tx, ty, tz)

    menjadi titik (x,y,z) digunakan matriks :

    Untuk invers dari translasi dapat dilakuan dengan mengubah nilai vektor translasi menjadi

    negatif .

    Praktikum 1

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 45

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Kubus 3D

    Width 340

    Height 135

    Label1 Caption Menggambar Kubus 3D

    Label2 Caption Koordinat Awal

    Label3 Caption Panjang Sisi

    Edit1 Name eX

    Edit2 Name eY

    Edit3 Name eZ

    Edit4 Name eSisi

    Button1 Name ButtonKubus

    Caption Kubus

    Button2 Name ButtonUlang

    Caption Ulang

    Button3 Name ButtonKeluar

    Caption Keluar

    5. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    // lebar layar dan tinggi layar maksimum

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    end;

    6. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    var k : Integer;

    begin

    for k := 1 to X0 do // sumbu x

    begin

    X3D := X0 + k; Y3D := Y0;

    Canvas.Pixels[X3D,Y3D]:= clBlue;

    end;

    for k := 1 to Y0 do // sumbu y

    begin

    X3D := X0; Y3D := Y0-k;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 46

    Canvas.Pixels[X3D,Y3D]:= clRed;

    end;

    for k := 1 to X0 do // sumbu z

    begin

    X3D := X0 - k; Y3D := Y0+k div 2;

    Canvas.Pixels[X3D,Y3D]:= clGreen;

    end;

    end;

    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.

    7. Kemudian tambahkan juga kode kemudian ketikan kode program berikut:

    procedure UbahKoordinat3D(var X3D,Y3D:Integer; X,Y,Z:Integer);

    begin

    X3D := X0 + X - Z;

    Y3D := Y0 - Y + Z div 2;

    end;

    procedure TForm1.Garis3D(Sender: TObject; x1,y1,z1,x2,y2,z2:integer);

    begin

    UbahKoordinat3D(X3D1,Y3D1,x1,y1,z1);

    UbahKoordinat3D(X3D2,Y3D2,x2,y2,z2);

    Canvas.MoveTo(X3D1,Y3D1);

    Canvas.LineTo(X3D2,Y3D2);

    end;

    8. Kemudian tambahkan kode program berikut dibawah type

    procedure Garis3D(Sender: TObject; x1,y1,z1,x2,y2,z2:integer);

    9. Kemudian tambahkan juga kode progam berikut dibawah var

    var

    Form1: TForm1;

    x0,y0:integer;

    X3D, Y3D, X, Y, Z:integer;

    X3D1, Y3D1, X3D2, Y3D2:integer;

    10. Kemudian pilih Objek ButtonKubus(Kubus), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.ButtonKubusClick(Sender: TObject);

    var

    X,Y,Z,S :integer;

    begin

    X := StrToInt(eX.Text);

    Y := StrToInt(eY.Text);

    Z := StrToInt(eZ.Text);

    S := StrToInt(eSisi.Text);

    Garis3D(Sender,X,Y,Z,X+S,Y,Z); // garis AB

    Garis3D(Sender,X,Y,Z,X,Y+S,Z); // garis AD

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 47

    Garis3D(Sender,X,Y,Z,X,Y,Z+S div 2); // garis AE

    Garis3D(Sender,X+S,Y,Z,X+S,Y,Z+S div 2); // garis BF

    Garis3D(Sender,X+S,Y,Z,X+S,Y+S,Z); // garis BC

    Garis3D(Sender,X+S,Y,Z+S div 2,X,Y,Z+S div 2); // garis FE

    Garis3D(Sender,X+S,Y,Z+S div 2,X+S,Y+S,Z+S div 2); // garis FG

    Garis3D(Sender,X,Y+S,Z,X,Y+S,Z+S div 2); // garis DH

    Garis3D(Sender,X,Y+S,Z,X+S,Y+S,Z); // garis DC

    Garis3D(Sender,X,Y+S,Z+S div 2,X,Y,Z+S div 2); // garis HE

    Garis3D(Sender,X,Y+S,Z+S div 2,X+S,Y+S,Z+S div 2); // garis HG

    Garis3D(Sender,X+S,Y+S,Z,X+S,Y+S,Z+S div 2); // garis CG

    end;

    11. Kemudian pilih Objek ButtonUlang(Ulang), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.ButtonUlangClick(Sender: TObject);

    begin

    Form1.Refresh;

    eX.Text:='';

    eY.Text:='';

    eZ.Text:='';

    eSisi.Text:='';

    end;

    12. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    Application.Terminate;

    end;

    13. Eksekusi program di atas dengan menekan tombol F9.

    Praktikum 2

    1. Buka Program Aplikasi Delphi

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 48

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Garis 3D

    Width 340

    Height 135

    Label1 Caption Menggambar Garis 3D

    Label2 Caption Titik Awal

    Label3 Caption Titik Akhir

    Edit1 Name eX1

    Edit2 Name eY1

    Edit3 Name eZ1

    Edit4 Name eX2

    Edit5 Name eY2

    Edit6 Name eZ2

    Button1 Name ButtonGaris

    Caption Garis

    Button2 Name ButtonUlang

    Caption Ulang

    Button3 Name ButtonKeluar

    Caption Keluar

    5. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 49

    // lebar layar dan tinggi layar maksimum

    x0 := ClientWidth div 2;

    y0 := ClientHeight div 2;

    end;

    6. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    var k : Integer;

    begin

    for k := 1 to X0 do // sumbu x

    begin

    X3D := X0 + k; Y3D := Y0;

    Canvas.Pixels[X3D,Y3D]:= clBlue;

    end;

    for k := 1 to Y0 do // sumbu y

    begin

    X3D := X0; Y3D := Y0-k;

    Canvas.Pixels[X3D,Y3D]:= clRed;

    end;

    for k := 1 to X0 do // sumbu z

    begin

    X3D := X0 - k; Y3D := Y0+k div 2;

    Canvas.Pixels[X3D,Y3D]:= clGreen;

    end;

    end;

    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.

    7. Kemudian tambahkan juga kode kemudian ketikan kode program berikut:

    procedure UbahKoordinat3D(var X3D,Y3D:Integer; X,Y,Z:Integer);

    begin

    X3D := X0 + X - Z;

    Y3D := Y0 - Y + Z div 2;

    end;

    procedure TForm1.Garis3D(Sender: TObject; x1,y1,z1,x2,y2,z2:integer);

    begin

    UbahKoordinat3D(X3D1,Y3D1,x1,y1,z1);

    UbahKoordinat3D(X3D2,Y3D2,x2,y2,z2);

    Canvas.MoveTo(X3D1,Y3D1);

    Canvas.LineTo(X3D2,Y3D2);

    end;

    8. Kemudian tambahkan kode program berikut dibawah type

    procedure Garis3D(Sender: TObject; x1,y1,z1,x2,y2,z2:integer);

    9. Kemudian tambahkan juga kode progam berikut dibawah var

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 50

    var

    Form1: TForm1;

    x0,y0:integer;

    X3D, Y3D, X, Y, Z:integer;

    X3D1, Y3D1, X3D2, Y3D2:integer;

    10. Kemudian pilih Objek ButtonGaris(Garis), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.ButtonGarisClick(Sender: TObject);

    var x1,y1,z1,x2,y2,z2 : Integer;

    begin

    x1:=StrToInt(eX1.Text); x2:=StrToInt(eX2.Text);

    y1:=StrToInt(eY1.Text); y2:=StrToInt(eY2.Text);

    z1:=StrToInt(eZ1.Text); z2:=StrToInt(eZ2.Text);

    UbahKoordinat3D(X3D1,Y3D1,x1,y1,z1); //titik awal

    UbahKoordinat3D(X3D2,Y3D2,x2,y2,z2); //titik akhir

    Canvas.MoveTo(X3D1,Y3D1);

    Canvas.LineTo(X3D2,Y3D2);

    end;

    11. Kemudian pilih Objek ButtonUlang(Ulang), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.ButtonUlangClick(Sender: TObject);

    begin

    Form1.Refresh;

    eX1.Text:=''; eY1.Text:=''; eZ1.Text:='';

    eX2.Text:=''; eY2.Text:=''; eZ2.Text:='';

    end;

    12. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    Application.Terminate;

    end;

    13. Eksekusi program di atas dengan menekan tombol F9.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 51

    Praktikum 3

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Translasi 3D

    Width 340

    Height 135

    Label1 Caption Translasi 3D

    Label2 Caption Banyak Segi

    Label3 Caption Nilai A

    Label4 Caption Nilai b

    Label5 Caption Nilai c

    Edit1 Name eSegi

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 52

    Edit2 Name eA

    Edit3 Name eB

    Edit4 Name eC

    Button1 Name ButtonObyek

    Caption Obyek

    Button2 Name ButtonTranslasi

    Caption Translasi

    Button3 Name ButtonKeluar

    Caption Keluar

    StringGrid1 Name StringGrid1

    FixedCol 1

    Fixed Row 0

    RowCount 2

    ColCount 2

    Options goEditing True

    Catatan:

    Komponen StringGrid1 bisa

    diakses pada Tab Control

    Additional pada komponen

    Pallete

    5. Kemudian tekan F12, masuk ke dalam code editor, kemudian ketikan kode program

    berikut dibawah uses:

    Type

    Matrik44 = array[1..4,1..4] of Real;

    Matrik4N = array[1..4,1..20] of Real; {N = 20 untuk antisipasi segi banyak}

    6. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    x0 := ClientWidth div 2; // lebar layar maksimum

    y0 := ClientHeight div 2; // tinggi layar maksimum

    with StringGrid1 do

    begin

    Cells[0,0]:='X';

    Cells[0,1]:='Y';

    Cells[0,2]:='Z';

    end;

    end;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 53

    7. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    begin

    var k : Integer;

    begin

    for k := 1 to X0 do // sumbu x

    begin

    X3D := X0 + k; Y3D := Y0;

    Canvas.Pixels[X3D,Y3D]:= clBlue;

    end;

    for k := 1 to Y0 do // sumbu y

    begin

    X3D := X0; Y3D := Y0-k;

    Canvas.Pixels[X3D,Y3D]:= clRed;

    end;

    for k := 1 to X0 do // sumbu z

    begin

    X3D := X0 - k; Y3D := Y0+k div 2;

    Canvas.Pixels[X3D,Y3D]:= clGreen;

    end;

    end;

    Perintah di atas akan menampilkan sumbu koordinat x yang berwarna biru dan

    sumbu koordinat y yang berwarna biru secara otomatis saat form dijalankan.

    8. Kemudian tambahkan juga kode kemudian ketikan kode program berikut:

    procedure UbahKoordinatObyek3D(var Obyek2D : Matrik44; Obyek3D :

    Matrik4N);

    var i : integer;

    begin

    for i := 1 to N do

    begin

    Obyek2D[1,i] := X0 + Obyek3D[1,i] - Obyek3D[3,i]; // koordinat 3D

    Obyek2D[2,i] := Y0 - Obyek3D[2,i] + Obyek3D[3,i] / 2; // jadi obyek 2D

    end;

    end;

    procedure TForm1.MatrikObyek3D(Sender: TObject; var Obyek3D :

    Matrik4N);

    var

    i,j : integer;

    begin

    N := StrToInt(eSegi.Text);

    for i := 1 to 3 do

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 54

    for j := 1 to N do

    Obyek3D[i,j] := StrToInt(StringGrid1.Cells[j,i-1]);

    for j := 1 to N do Obyek3D[4,j] :=1;

    end;

    procedure TForm1.GambarObyek3D(Sender : TObject; Obyek3D :

    Matrik4N);

    var i : integer;

    begin

    UbahKoordinatObyek3D(Obyek2D,Obyek3D);

    for i := 1 to N-1 do

    begin

    Canvas.MoveTo(trunc(Obyek2D[1,i]), trunc(Obyek2D[2,i]));

    Canvas.LineTo(trunc(Obyek2D[1,i+1]), trunc(Obyek2D[2,i+1]));

    end;

    Canvas.MoveTo(trunc(Obyek2D[1,N]), trunc(Obyek2D[2,N]));

    Canvas.LineTo(trunc(Obyek2D[1,1]), trunc(Obyek2D[2,1]));

    end;

    procedure MatrikTranslasi3D(var Tv3 : Matrik44; a,b,c: real);

    begin

    Tv3[1,1] := 1 ; Tv3[1,2] := 0 ; Tv3[1,3] := 0 ; Tv3[1,4] := a ;

    Tv3[2,1] := 0 ; Tv3[2,2] := 1 ; Tv3[2,3] := 0 ; Tv3[2,4] := b ;

    Tv3[3,1] := 0 ; Tv3[3,2] := 0 ; Tv3[3,3] := 1 ; Tv3[3,4] := c ;

    Tv3[4,1] := 0 ; Tv3[4,2] := 0 ; Tv3[4,3] := 0 ; Tv3[4,4] := 1 ;

    end;

    procedure MatrikKaliTransformasiObyek3D(var Obyek : Matrik4N; Tr :

    Matrik44);

    var i, j,k : integer; Hasil : matrik4N;

    begin

    for i := 1 to 4 do

    for k := 1 to N do

    begin Hasil [i,k] := 0;

    for j := 1 to 4 do

    Hasil[i,k] := Hasil[i,k] + Tr[i,j] * Obyek[j,k];

    end;

    Obyek := Hasil;

    end;

    9. Kemudian tambahkan kode program berikut dibawah type

    procedure MatrikObyek3D(Sender: TObject; var Obyek3D :Matrik4N);

    procedure GambarObyek3D(Sender : TObject; Obyek3D :Matrik4N);

    10. Kemudian tambahkan juga kode progam berikut dibawah var

    var

    Form1: TForm1;

    Obyek2D: Matrik44;

    Obyek3D :Matrik4N;

    X3D, Y3D, X, Y, Z:integer;

    X3D1, Y3D1, X3D2, Y3D2:integer;

    Tv3 :Matrik44;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 55

    a,b,c:real;

    x0,y0,N:Integer;

    11. Kemudian pilih Objek ButtonObyek(Obyek), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonObyekClick(Sender: TObject);

    begin

    MatrikObyek3D(Sender,Obyek3D);

    GambarObyek3D(Sender,Obyek3D);

    end;

    12. Kemudian pilih eSegi(), klik 2x kemudian ketikan kode program berikut:

    procedure TForm1.eSegiChange(Sender: TObject);

    begin

    if eSegi.Text='' then

    begin

    eSegi.SetFocus;

    StringGrid1.ColCount:=2;

    StringGrid1.RowCount:=3;

    end

    else

    begin

    n:=StrToInt(eSegi.Text);

    StringGrid1.ColCount:=N+1;

    StringGrid1.RowCount:=3;

    end;

    end;

    13. Kemudian pilih Objek ButtonTranslasi(Translasi), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonTranslasiClick(Sender: TObject);

    begin

    a := StrToFloat(eA.Text);

    b := StrToFloat(eB.Text);

    c := StrToFloat(eC.Text);

    MatrikObyek3D(Sender,Obyek3D);

    MatrikTranslasi3D(Tv3,a,b,c);

    MatrikKaliTransformasiObyek3D(Obyek3D,Tv3);

    GambarObyek3D(Sender,Obyek3D);

    end;

    14. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 56

    Application.Terminate;

    end;

    15. Eksekusi program di atas dengan menekan tombol F9.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 57

    MODUL VI

    MENGGAMBAR ROTASI 3D DAN SCALLING 3D

    I. TUJUAN

    1. Mahasiswa dapat menggambar objek 3D

    2. Mahasiswa dapat membuat rotasi obyek 3D

    3. Mahasiswa dapat melakukan proses scalling 3D

    II. TEORI

    Berbeda dengan rotasi 2 dimensi yang menggunakan titik pusat (0,0)sebagai pusat

    perputaran, rotasi 3 dimensi menggunakan sumbu koordinat sebagai pusat perputaran.

    Dengan demikian ada 3 macam rotasi yang dapat dilakukan, yaitu:

    Rotasi sumbu x

    Rotasi sumbu y

    Rotasi sumbu z

    Mengingat ada 3 buah sumbu rotasi maka matriks transformasi yang digunakan juga

    bergantung kepada sumbu putar. Adapun isi matriks transformasi sesuai dengan sumbu putar

    didefinisikan sebagai berikut :

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 58

    Praktikum 1

    1. Buka Program Aplikasi Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Rancanglah Form seperti gambar dibawah ini

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Rotasi 3D

    Width 340

    Height 135

    Label1 Caption Rotasi 3D

    Label2 Caption Banyak Segi

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 59

    Label3 Caption Sudut

    Edit1 Name eSegi

    Edit2 Name eSudut

    Button1 Name ButtonRotasi

    Caption Rotasi

    Button2 Name ButtonObyek

    Caption Obyek

    Button3 Name ButtonKeluar

    Caption Keluar

    StringGrid1 Name StringGrid1

    FixedCol 1

    Fixed Row 0

    RowCount 2

    ColCount 2

    Options goEditing True

    Catatan:

    Komponen StringGrid1 bisa

    diakses pada Tab Control

    Additional pada komponen

    Pallete

    5. Kemudian tekan F12, masuk ke dalam code editor, kemudian ketikan kode program

    berikut dibawah uses:

    Type

    Matrik44 = array[1..4,1..4] of Real;

    Matrik4N = array[1..4,1..20] of Real; {N = 20 untuk antisipasi segi banyak}

    6. Kemudian pilih Objek Form1, klik 2x pada form yang kosong, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    x0 := ClientWidth div 2; // lebar layar maksimum

    y0 := ClientHeight div 2; // tinggi layar maksimum

    with StringGrid1 do

    begin

    Cells[0,0]:='X';

    Cells[0,1]:='Y';

    Cells[0,2]:='Z';

    end;

    end;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 60

    7. Kemudian tambahkan juga kode pada objek Form1, Klik Form1, Kemudian pilih

    Objek Form1, pada event OnPaint klik 2x disebelah kanannya, kemudian ketikan

    kode program berikut:

    procedure TForm1.FormPaint(Sender: TObject);

    begin

    var k : Integer;

    begin

    for k := 1 to X0 do // sumbu x

    begin

    X3D := X0 + k; Y3D := Y0;

    Canvas.Pixels[X3D,Y3D]:= clBlue;

    end;

    for k := 1 to Y0 do // sumbu y

    begin

    X3D := X0; Y3D := Y0-k;

    Canvas.Pixels[X3D,Y3D]:= clRed;

    end;

    for k := 1 to X0 do // sumbu z

    begin

    X3D := X0 - k; Y3D := Y0+k div 2;

    Canvas.Pixels[X3D,Y3D]:= clGreen;

    end;

    end;

    Perintah di atas akan menampilkan sumbu koordinat x yang berwarna biru dan

    sumbu koordinat y yang berwarna biru secara otomatis saat form dijalankan.

    8. Kemudian tambahkan juga kode kemudian ketikan kode program berikut:

    procedure UbahKoordinatObyek3D(var Obyek2D : Matrik44; Obyek3D :

    Matrik4N);

    var i : integer;

    begin

    for i := 1 to N do

    begin

    Obyek2D[1,i] := X0 + Obyek3D[1,i] - Obyek3D[3,i]; // koordinat 3D

    Obyek2D[2,i] := Y0 - Obyek3D[2,i] + Obyek3D[3,i] / 2; // jadi obyek 2D

    end;

    end;

    procedure TForm1.MatrikObyek3D(Sender: TObject; var Obyek3D :

    Matrik4N);

    var

    i,j : integer;

    begin

    N := StrToInt(eSegi.Text);

    for i := 1 to 3 do

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 61

    for j := 1 to N do

    Obyek3D[i,j] := StrToInt(StringGrid1.Cells[j,i-1]);

    for j := 1 to N do Obyek3D[4,j] :=1;

    end;

    procedure TForm1.GambarObyek3D(Sender : TObject; Obyek3D :

    Matrik4N);

    var i : integer;

    begin

    UbahKoordinatObyek3D(Obyek2D,Obyek3D);

    for i := 1 to N-1 do

    begin

    Canvas.MoveTo(trunc(Obyek2D[1,i]), trunc(Obyek2D[2,i]));

    Canvas.LineTo(trunc(Obyek2D[1,i+1]), trunc(Obyek2D[2,i+1]));

    end;

    Canvas.MoveTo(trunc(Obyek2D[1,N]), trunc(Obyek2D[2,N]));

    Canvas.LineTo(trunc(Obyek2D[1,1]), trunc(Obyek2D[2,1]));

    end;

    procedure MatrikRotasiSumbuZ(var R : Matrik44; sudut: real);

    Var radian : real;

    Begin

    radian := sudut / 180 * 3.14;

    R[1,1] := cos(radian); R[1,2] := -sin(radian); R[1,3] := 0 ; R[1,4] := 0;

    R[2,1] := sin(radian); R[2,2] := cos(radian); R[2,3] := 0 ; R[2,4] := 0;

    R[3,1] := 0 ; R[3,2] := 0 ; R[3,3] := 1 ; R[3,4] := 0;

    R[4,1] := 0 ; R[4,2] := 0 ; R[4,3] := 0 ; R[4,4] := 1;

    end;

    procedure MatrikKaliTransformasiObyek3D(var Obyek : Matrik4N; Tr :

    Matrik44);

    var i, j,k : integer; Hasil : matrik4N;

    begin

    for i := 1 to 4 do

    for k := 1 to N do

    begin Hasil [i,k] := 0;

    for j := 1 to 4 do

    Hasil[i,k] := Hasil[i,k] + Tr[i,j] * Obyek[j,k];

    end;

    Obyek := Hasil;

    end;

    9. Kemudian tambahkan kode program berikut dibawah type

    procedure MatrikObyek3D(Sender: TObject; var Obyek3D :Matrik4N);

    procedure GambarObyek3D(Sender : TObject; Obyek3D :Matrik4N);

    10. Kemudian tambahkan juga kode progam berikut dibawah var

    var

    Form1: TForm1;

    Obyek2D,R3:Matrik44;

    Obyek3D :Matrik4N;

    N: Integer;

    sudut:real;

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 62

    X3D, Y3D, X, Y, Z:integer;

    X3D1, Y3D1, X3D2, Y3D2:integer;

    Tv3 :Matrik44;

    a,b,c:real;

    x0,y0:Integer;

    11. Kemudian pilih Objek ButtonObyek(Obyek), klik 2x kemudian ketikan kode

    program berikut:

    procedure TForm1.ButtonObyekClick(Sender: TObject);

    begin

    MatrikObyek3D(Sender,Obyek3D);

    GambarObyek3D(Sender,Obyek3D);

    end;

    12. Kemudian pilih eSegi(), klik 2x kemudian ketikan kode program berikut:

    procedure TForm1.eSegiChange(Sender: TObject);

    begin

    if eSegi.Text='' then

    begin

    eSegi.SetFocus;

    StringGrid1.ColCount:=2;

    StringGrid1.RowCount:=3;

    end

    else

    begin

    n:=StrToInt(eSegi.Text);

    StringGrid1.ColCount:=N+1;

    StringGrid1.RowCount:=3;

    end;

    end;

    13. Kemudian pilih Objek ButtonRotasi(Rotasi), klik 2x kemudian ketikan kode program

    berikut:

    procedure TForm1.ButtonRotasiClick(Sender: TObject);

    begin

    sudut:=StrToFloat(eSudut.Text);

    MatrikObyek3D(Sender,Obyek3D);

    MatrikRotasiSumbuZ(R3,sudut);

    MatrikKaliTransformasiObyek3D(Obyek3D,R3);

    Canvas.Pen.Color := clGreen;

    GambarObyek3D(Sender,Obyek3D);

    end;

    14. Kemudian pilih Objek ButtonKeluar(Keluar), klik 2x kemudian ketikan kode

    program berikut:

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 63

    procedure TForm1.KeluarClick(Sender: TObject);

    begin

    Application.Terminate;

    end;

    15. Eksekusi program di atas dengan menekan tombol F9.

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 64

    MODUL VII

    MENGGAMBAR CHART

    I. TUJUAN

    1. Mahasiswa dapat menggambar objek CHART

    2. Mahasiswa dapat memilih CHART

    II. TEORI

    Chart adalah bagan grafik yang digunakan unuk mempresentasikan suatu data ke

    dalam suatu bentuk yang lebih menarik. Tujuan dibuatnya Chart adalah untuk mempermudah

    membaca sekumpulan data.

    Perancangan program untuk penggambaran Chart Animasi dapat dilakukan dengan

    langkah-langkah seperti di bawah ini.

    Praktikum 01

    1. Jalankan Delphi

    2. Untuk memulai Proyek baru pilih Menu File New Application

    3. Setelah muncul Form baru pada halaman Delphi, maka tambahkan icon Button1,

    Button2, DBCHart, dan Timer pada halaman Form1.

    4. Isi Properti setiap komponen adalah:

    Komponen Properti Nilai

    Form Name Form1

    Caption Chart

    Button1 Name Button1

    Caption &About

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 65

    Button2 Name Button2

    Caption &Close

    Timer Interval 100

    5. Klik 2x Pada DBChart, maka akan muncul tampilan berikut:

    6. Perhatikan pada bagian Form Editing DBChart1, klik 1x pada button Add, sehingga

    muncul tampilan.

    7. Klik pada icon Line dan kemudian klik OK, sehingga akan muncul tampilan.

    8. Beri nama series dengan mengklik Button Title, misalkan Jakarta

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 66

    9. Ulangi kembali langkah no 5 dan tambahkan kota Yogyakarta, Bandung, Semarang

    10. Kemudian klik pada PageControl Axis, sehingga muncul tampilan

    11. Lalu pada Axis klik PageControl Title, sehingga muncul tampilan

    12. Atur bottom

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 67

    13. Kemudian klik pada Pagecontrol Title

    14. Klik button close maka akan muncul

    15. Kemudian klik 2x pada timer, masukan kode berikut

    procedure TForm1.Timer1Timer(Sender: TObject);

    Var i: longint;

    tmp: double;

    begin

    with DBChart1 do

    begin

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 68

    for i := 0 to seriescount-1 do

    with Series[i] do

    begin

    tmp := xvalues[1] - xvalues[0];

    delete(0);

    addxy(xvalues.Last+tmp,YValues.Last+random(100)-50,'',clteecolor);

    end;

    repaint

    end;

    end;

    16. Kemudian klik 1x pada halaman form, lalu kilk sekalipada PageControl Event,

    kemudian klik 2x padaOnActive, masukan kode program berikut

    procedure TForm1.FormActivate(Sender: TObject);

    var i,j : integer;

    begin

    with DBChart1 do

    for i := 0 to SeriesCount-1 do

    for j := 1 to 15 do

    series[i].AddXY(j,random(5),'',clteecolor);

    end;

    17. Tambahkan kode program berikut

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    MessageDlg('1231313131',mtInformation,[MBOK],0);

    end;

    procedure TForm1.Button2Click(Sender: TObject);

    begin

    close;

    end;

    18. Jalankan F9

  • Modul Praktikum Grafika Komputer

    Tito Sugiharto, M.Eng - Universitas Kuningan 2015 Page 69

    MODUL VIII

    MEMBUAT GRAFIK ANIMASI

    I. TUJUAN

    1. Mahasiswa dapat menggambar objek Animasi

    2. Mahasiswa dapat membuat program sederhana

    II. TEORI

    Animasi yang akan dibuat pada bab ini adalah sebuah animasi pergerakan bola yang

    memantul dari atas sampai ke bawah. Perancangan program untuk animasi bola pantul dapat

    dilakukan dengan langkah seperti di bawah ini:

    Praktikum 01

    1. Jalankan Delphi