• Tidak ada hasil yang ditemukan

Aplikasi Grafika Komputer untuk Transfor

N/A
N/A
Protected

Academic year: 2018

Membagikan "Aplikasi Grafika Komputer untuk Transfor"

Copied!
138
0
0

Teks penuh

(1)

APLIKASI GRAFIKA KOMPUTER UNTUK

TRANSFORMASI GEOMETRI 3 DIMENSI

Tugas Akhir

untuk memenuhi sebagian persyaratan mencapai

derajat Sarjana Teknik

oleh

Alfa Ryano Yohannis

L2F002548

JURUSAN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS DIPONEGORO

(2)

Laporan Tugas Akhir dengan judul “APLIKASI GRAFIKA KOMPUTER

UNTUK TRANSFORMASI GEOMETRI 3 DIMENSI” yang disusun oleh

Nama : Alfa Ryano Yohannis

NIM : L2F002548

Telah disetujui dan disahkan untuk dijadikan laporan Tugas Akhir sebagai salah

satu syarat menyelesaikan program Strata Satu Jurusan Teknik Elektro Fakultas

Teknik Universitas Diponegoro Semarang.

Menyetujui dan mengesahkan

Pembimbing I

Pembimbing II

Agung B.P., S.T., M.I.T.

Eko Handoyo, S.T., M.T.

NIP. 132 137 932

NIP. 132 309 142

Tanggal September 2006

Tanggal September 2006

Mengetahui

a.n. Dekan

Ketua Jurusan Teknik Elektro

Fakultas Teknik Universitas Diponengoro

(3)

Tugas Akhir

APLIKASI GRAFIKA KOMPUTER UNTUK

TRANSFORMASI GEOMETRI 3 DIMENSI

yang dipersiapkan dan disusun oleh

Alfa Ryano Yohannis

L2F002548

Telah dipertahankan di depan para Dosen Penguji

Pada tanggal September 2006

Dan dinyatakan telah memenuhi syarat

Susunan Dosen Penguji

Tanda tangan

Ketua

: Aghus Sofwan, S.T., M.T.

NIP. 132 163 757

Tanggal: September 2006

Sekretaris : Maman Somantri, S.T., M.T.

NIP. 132 231 133

Tanggal: September 2006

Anggota : Imam Santoso, S.T., M.T.

(4)

i

Puji syukur kepada Allah Bapa yang bertahta di dalam Kerajaan Sorga yang

telah memberikan karunia-Nya sehingga penyusun dapat menyelesaikan Tugas

Akhir ini. Terpujilah nama-Nya kekal selama-lamanya.

Tugas Akhir ini dibuat sebagai syarat untuk memenuhi gelar Sarjana Teknik

di Jurusan Teknik Elektro Fakutas Teknik Universitas Diponegoro. Penyusun

mengharapkan Tugas Akhir ini dapat bermanfaat bagi pengembangan ilmu

pengetahuan di bidang grafika komputer khususnya di Teknik Elektro Universitas

Diponegoro..

Penyusun mengucapkan terima kasih kepada pihak-pihak yang telah

membantu dalam penyelesaian Tugas Akhir, yaitu:

1.

Bapak Agung B.P. sebagai Dosen Pembimbing I. Terima kasih karena beliau

sudah membimbing, mengarahkan, mengkoreksi, dan memberi masukan

dalam penyelesaian Tugas Akhir ini,

2.

Bapak Eko Handoyo sebagai Dosen Pembimbing II. Terima kasih karena

beliau telah menolong dalam analisis dan perancangan Tugas Akhir serta

mengkoreksi tata penulisan laporan,

3.

Orang tua penyusun yang terus mengingatkan dan mendorong agar segera

menyelesaian Tugas Akhir, dan

4.

Pihak-pihak yang tidak bisa penyusun sebutkan satu per satu. Terima kasih

buat setiap bantuan kalian.

Tugas Akhir ini masih memiliki kekurangan. Oleh karena itu, penyusun

meminta maaf. Saran dan kritik Anda sangat diperlukan bagi menyempurnakan

Tugas Akhir ini. Terima kasih.

Semarang, 19 September 2006

(5)

ii

DAFTAR ISI

KATA PENGANTAR ... i

DAFTAR ISI ... ii

DAFTAR GAMBAR ... v

DAFTAR TABEL ... vii

ABSTRAK ... viii

BAB I PENDAHULUAN ... 1

1.1.

Latar Belakang ... 1

1.2.

Identifikasi Masalah ... 2

1.3.

Batasan Masalah ... 3

1.4.

Tujuan Penelitian ... 3

1.5.

Kegunaan Hasil Penelitian ... 3

1.6.

Sistematika Penulisan ... 4

BAB II TRANSFORMSI GEOMETRI

PADA RUANG 3 DIMENSI ... 5

2.1.

Transformasi 3 Dimensi ... 5

2.1.1.

Translasi ... 6

2.1.2.

Penskalaan ... 7

2.1.3.

Rotasi ... 7

2.1.4.

Shearing ... 8

2.1.5.

Transformasi Komposit ... 9

2.1.6.

Rotasi menggunakan sumbu yang tidak melewati titik origin ... 9

2.1.7.

Penskalaan Menggunakan Sembarang Titik Pusat ... 10

2.2.

Transformasi 3 Dimensi pada OpenGL ... 10

2.3.

Penggunaan OpenGL pada Delphi untuk Transformasi 3D ... 12

2.4.

Representasi Objek 3 Dimensi ... 14

(6)

BAB III PERANCANGAN APLIKASI GRAFIKA KOMPUTER

UNTUK TRANSFORMASI OBJEK 3D ... 17

3.1.

Use Case ... 17

3.2.

Kartu Index CRC ... 18

3.3.

Diagram Kelas ... 21

3.4.

Model Hubungan Objek (Object Relationship) ... 21

3.5.

Model Tingkah Laku Objek (Object Behaviour) ... 23

3.6.

Perancangan Antarmuka ... 24

BAB IV IMPLEMENTASI DAN PENGUJIAN APLIKASI

GRAFIKA KOMPUTER UNTUK TRANSFORMASI OBJEK 3D ... 25

4.1.

Implementasi Aplikasi ... 25

4.1.1.

Implementasi Tampilan ... 25

4.1.2.

Implementasi Objek Geometri ... 28

a.

Piramida ... 28

b.

Kubus ... 29

c.

Silinder ... 30

d.

Daftar Geometri ... 32

4.1.3.

Implementasi Vektor ... 33

4.1.4.

Implementasi Transformasi 3D ... 35

a.

Perkalian Matriks ... 35

b.

Matriks Identitas ... 35

c.

Translasi ... 36

d.

Penskalaan ... 36

e.

Rotasi ... 37

f.

Shearing ... 38

g.

Matriks Transform ... 39

4.1.5.

Implementasi Transformasi Menggunakan Mouse ... 39

4.1.6.

Implementasi Benda Rumit ... 41

4.2.

Pengujian Validasi Fungsi Transformasi Aplikasi ... 43

4.2.1.

Pengujian Transformasi Rotasi... 44

a.

Contoh perhitungan ... 45

b.

Perbandingan antara hasil perhitungan dan hasil aplikasi ... 45

(7)

iv

a.

Contoh perhitungan ... 46

b.

Perbandingan antara hasil perhitungan dan hasil aplikasi ... 47

4.2.3.

Pengujian Transformasi Rotasi... 47

a.

Contoh perhitungan ... 48

b.

Perbandingan antara hasil perhitungan dan hasil aplikasi ... 52

4.2.4.

Pengujian Transformasi Shearing ... 52

a.

Contoh perhitungan ... 53

b.

Perbandingan antara hasil perhitungan dan hasil aplikasi ... 53

4.3.

Pengujian Framerate ... 54

5.3.1.

Pengujian Framerate Rotasi ... 56

5.3.2.

Pengujian Framerate Translasi ... 57

5.3.3.

Pengujian Framerate Penskalaan ... 58

5.3.4.

Pengujian Framerate Rotasi ... 59

BAB V KESIMPULAN DAN SARAN ... 61

5.1.

Keimpulan ... 61

5.2.

Saran ... 62

DAFTAR PUSTAKA ... 63

LAMPIRAN A KODE PROGRAM ... 65

PtugasAkhir.dpr ... 65

unitUtama.pas... 65

Vektor.pas ... 84

unitPenskalaan.pas ... 85

unitRotasi.pas ... 87

unitShearing.pas ... 88

unitTranslasi.pas... 90

unitAbout.pas ... 91

Geometri.pas ... 91

Transformasi.pas ... 108

LAMPIRAN B WAVEFRONT OBJ FILE FORMAT SUMMARY ... 112

LAMPIRAN C PERINTAH OPENGL PADA APLIKASI

GRAFIKA KOMPUTER UNTUK TRANSFORMASI 3D ... 117

(8)

v

BAB I PENDAHULUAN

Gambar 1.1 Aplikasi komputer grafis: Blender ... 1

Gambar 1.2 3DS Max 8: Aplikasi Penampil Objek 3D ... 2

BAB II TRANSFORMSI GEOMETRI

Gambar 2.1 Rotasi menggunan sumbu yang tidak melewati titik origin ... 9

Gambar 2.2 Objek geometri kubus ... 14

BAB III ANALISIS DAN PENCANGAN APLIKASI

Gambar 3.1 Diagram use case aplikasi grafika komputer

untuk transformasi dimensi ... 18

Gambar 3.2 Diagram kelas aplikasi grafika komputer

untuk transformasi 3 dimensi ... 21

Gambar 3.3 Diagram runtun aplikasi grafika komputer

untuk transformasi 3 dimensi ... 22

Gambar 3.4 Diagram statechart aplikasi grafika komputer

untuk transformasi 3 dimensi ... 23

Gambar 3.5 Desain antarmuka aplikasi grafika komputer

untuk transformasi 3 dimensi ... 24

BAB IV IMPLEMENTASI DAN PENGUJIAN APLIKASI

Gambar 4.1 Tampilan aplikasi grafika komputer untuk transformasi 3 dimensi .. 25

Gambar 4.2 Toolbar dan menu aplikasi ... 26

Gambar 4.3 Tampilan tab-tab untuk objek kubus, piramid,

(9)

vi

Gambar 4.9 Objek geometri silinder ... 30

Gambar 4.10 Objek mobil dan bola menggunakan obj loader (a) posisi awal

(b) posisi setelah rotasi ... 42

Gambar 4.11 Posisi awal piramida pada layar aplikasi... 43

Gambar 4.12 Form untuk memasukkan nilai translasi ... 44

Gambar 4.13 Piramida: (a) sebelum translasi (b) sesudah translasi... 44

Gambar 4.14 Form untuk memasukkan nilai penskalaan ... 46

Gambar 4.15 Piramida: (a) sebelum penskalaan (b) sesudah penskalaan ... 46

Gambar 4.16 Form untuk memasukkan nilai rotasi ... 47

Gambar 4.17 Piramida: (a) sebelum rotasi (b) sesudah rotasi ... 48

Gambar 4.18 Form untuk memasukkan nilai shearing ... 52

Gambar 4.19 Piramida: (a) sebelum shearing (b) sesudah shearing ... 53

(10)

vii

BAB II TRANSFORMASI GEOMETRI PADA RUANG 3D

Tabel 2.1 Verteks penyusun kubus ... 15

BAB III ANALISIS DAN PENCANGAN APLIKASI

Tabel 3.1 Kartu indeks CRC kelas objek geometri ... 19

Tabel 3.2 Kartu indeks CRC kelas kubus... 19

Tabel 3.3 Kartu indeks CRC kelas piramid ... 19

Tabel 3.4 Kartu indeks CRC kelas silinder ... 19

Tabel 3.5 Kartu indeks CRC kelas meja ... 20

Tabel 3.6 Kartu index CRC kelas kursi ... 20

Tabel 3.7 Kartu indeks CRC kelas Transformasi ... 20

BAB IV IMPLEMENTASI DAN PENGUJIAN APLIKASI

Tabel 4.1 Koordinat awal titik-titik piramida ... 44

Tabel 4.2 Perbandingan antara hasil perhitungan dan

hasil aplikasi untuk translasi ... 45

Tabel 4.3 Perbandingan antara hasil perhitungan dan

hasil aplikasi untuk pensklaan ... 47

Tabel 4.4 Perbandingan antara hasil perhitungan dan

hasil aplikasi untuk rotasi ... 52

Tabel 4.5 Perbandingan antara hasil perhitungan dan

hasil aplikasi untuk shearing ... 54

Tabel 4.6 Perbandingan framerate transformasi aplikasi dan OpenGL

untuk transformasi rotasi ... 57

Tabel 4.7 Perbandingan framerate transformasi aplikasi dan OpenGL

untuk transformasi translasi ... 57

Tabel 4.8 Perbandingan framerate transformasi aplikasi dan OpenGL

untuk transformasi penskalaan ... 58

(11)

viii

ABSTRAK

Perkembangan teknologi di bidang grafika komputer begitu pesat. Ini terbukti dengan banyaknya aplikasi yang menggunakan grafika komputer antara lain video game, CAD, dan simulator. Grafika komputer sendiri tidak lepas dari transformasi geometri. Dengan transformasi geometri, suatu objek geometri dapat dipindahkan dan diubah bentuknya. Masalah yang timbul, yaitu bagaimana mengimplementasikan transformasi geometri tersebut ke dalam suatu aplikasi. Transformasi geometri yang dapat dilakukan oleh aplikasi berupa translasi, rotasi, penskalaan, dan shearing. Selain itu, aplikasi tersebut dapat digunakan dengan mudah oleh pengguna untuk menampilkan objek 3 dimensi dan mentransformasinya.

Agar menghasilkan suatu aplikasi yang dapat mengimplementasikan transformasi geometri, aplikasi dibuat dengan menggunakan bahasa pemrograman Delphi dan API OpenGL. OpenGL digunakan untuk menampilkan objek 3 dimensi dan Delphi digunakan untuk membuat antarmuka pengguna, struktur data, dan fungsi-fungsi transformasi. Perancangan dilakukan dengan menggunakan pendekatan berorientasi objek. Sebagai parameter aplikasi dapat berjalan baik, aplikasi dapat mentransformasi objek 3 dimensi melalui antarmuka pengguna yang dibuat dan hasil transformasinya sesuai dengan persamaan transformasi geometri.

(12)

ix

ABSTRACT

Computer graphics technology grows rapidly. It can be seen by many application that use computer graphics such as video game, CAD, and simulator. Computer graphics itselves are not free from gometric transformation. By goemetric transformation, an geometric object can be moved and it’s shape can be changed. The problem that appear is how to implement geometric transformation into an application. Geometric transformations that can be done by the application are translation, rotation, scaling, and shearing. Beside that, the application can be used easily by user to show 3 dimension objects and transform them.

In order to produce an application that can implement geometric transformation, the application is made by using Delphi programming language OpenGL API. OpenGL is used to show 3 dimension object and Delphi is used to make user interface, data stucture, and functions of tranformation. Design is performed by using object oriented approach. As parameters if the application run well, the application can transform 3 dimension object by using it’s user interface and the it’s transformation result equal to the geometric transformation equation.

As implementation, application is made in a studio form that can do 3 dimension transfomation on geometric objects. The testing is performed by comparing application transformation results with transformation results from calculation to show if the application can transform correctly. The results, coordinates from the application transformation results are equal with the results from calculation. The testing is also performed by comparing framerate between application transformation functions and OpenGL transformation functions. The results, OpenGL transformation functions has higher framerate than the application functions have.

(13)

1

BAB I

PENDAHULUAN

1.1

Latar Belakang Masalah

Grafika komputer–salah satu cabang ilmu komputer–berkembang cukup

pesat. Ini terbukti dengan banyaknya bidang yang menerapkan grafika komputer

seperti

video game, CAD (Computer Aided Design), animasi, simulasi, dan

lain-lain. Gambar 1.1 memperlihatkan aplikasi komputer grafis bernama Blender

[17]

yang biasa digunakan untuk pemodelan dan animasi.

Gambar 1.1 Aplikasi komputer grafis: Blender.

(14)

Tugas akhir ini mencoba mengimplementasikan transformasi 3 dimensi

dalam bentuk suatu aplikasi studio. Aplikasi dapat membuat suatu objek yang

kemudian dapat ditransformasikan sesuai dengan transformasi yang dimiliki oleh

aplikasi tersebut. Transformasi yang dapat dilakukan berupa translasi, penskalaan,

rotasi, dan shearing. Analisis dan perancangan aplikasi menggunakan pendekatan

berorientasi objek. Aplikasi dibuat dengan menggunakan bahasa pemrograman

Delphi dan OpenGL API (Application Programming Interface).

Gambar 1.2 3DS Max 8: Aplikasi Penampil Objek 3 Dimensi.

Tugas Akhir ini diharapkan dapat menghasilkan suatu aplikasi studio yang

dapat melakukan transformasi 3 dimensi pada objek yang dibuat. Aplikasi dapat

melakukan transformasi translasi, penskalaan, rotasi, dan

shearing seperti yang

terdapat pada aplikasi-aplikasi pemodelan 3 dimensi, antara lain 3DS Max

[16]

(gambar 1.2) atau Blender (gambar 1.1). Aplikasi juga diharapkan memiliki

antarmuka yang mudah digunakan (user friendly) sehingga mempermudah

melakukan transformasi 3 dimensi pada objek.

1.2

Identifikasi Masalah

(15)

3

1.

Bagaimana merepresentasikan objek 3 dimensi sehingga dapat ditampilkan

pada layar.

2.

Melakukan transformasi pada objek 3 dimensi pada aplikasi tersebut.

Tansformasi meliputi translasi, penskalaan, shearing, dan rotasi.

3.

Antarmuka pengguna dengan program sehingga pengguna dapat melakukan

transformasi pada objek sesuai yang dikehendaki.

1.3

Batasan Masalah

1.

Tugas Akhir ini membahas mengenai implementasi transformasi 3 dimensi

dalam bentuk suatu aplikasi studio penampil objek 3 dimensi.

2.

Implementasi transformasi 3 dimensi menggunakan bahasa pemrograman

Delphi dan API OpenGL.

3.

Analisis dan perancangan aplikasi menggunakan pendekatan berorientasi

objek.

1.4

Tujuan Penelitian

Tujuan penelitian adalah implementasi fungsi-fungsi transformasi 3 dimensi

dalam bentuk suatu aplikasi studio.

1.5

Kegunaan Hasil Penelitian

Kegunaan dari Tugas Akhir Implementasi Transformasi 3 Dimensi

Komputer Grafis Pada Aplikasi Penampil Objek 3 Dimensi, yaitu:

1.

Mengetahui bagaimana mengimplementasikan transformasi 3 dimensi pada

aplikasi 3 dimensi menggunakan OpenGL dan Delphi dengan pendekatan

berorientasi objek.

2.

Menghasilkan suatu aplikasi yang dapat melakukan transformasi 3 dimensi.

Aplikasi ini dapat dikembangkan lebih untuk fungsi-fungsi yang lebih luas

yang berkaitan dengan Grafika Komputer, seperti pewarnaan, texture mapping,

rendering, dan animasi.

1.6

Sistematika Penulisan Laporan

(16)

Perancangan Aplikasi Grafika Komputer untuk Transformasi Geometri 3

Dimensi, Bab IV Implementasi dan Pengujian Aplikasi Grafika Komputer untuk

Transformasi Geometri 3 Dimensi, dan Bab V Kesimpulan dan Saran. Berikut

penjelasan gambaran singkat bab-bab tersebut:

Bab I Pendahuluan. Bab ini berisi latar belakang yang menjadi alasan

mengapa penulis mengambil topik tugas akhir di bidang grafika komputer,

identifikasi masalah yang diperkirakan ada selama pembuatan aplikasi, batasan

masalah tugas akhir, tujuan penelitian, dan kegunaan hasil penelitian.

Bab II Transformasi Geometri pada Ruang 3 Dimensi

.

Bab II memuat

teori-teori tentang transformasi geometri pada ruang 3 dimensi, bagaimana melakukan

transformasi tersebut pada OpenGL, bagaimana menghubungkan OpenGL dengan

bahasa pemrograman Delphi, dan landasan teori bagaimana pengguna dapat

mentransformasi objek 3 dimensi dengan menggunakan antarmuka yang

disediakan aplikasi.

Bab III Perancangan Aplikasi Grafika Komputer untuk Transformasi

Geometri 3 Dimensi. Bab III berisi perancangan yang dilakukan sebelum

membuat aplikasi. Perancangan dilakukan dengan menggunakan pendekatan

berorientasi objek. Langkah-langkah yang dilakukan, yaitu membuat

use case,

kartu indeks

CRC, diageam kelas, model hubungan objek, model tingkah laku

objek, dan perancangan antarmuka.

Bab IV Implementasi dan Pengujian Aplikasi Grafika Komputer untuk

Transformasi Geometri 3 Dimensi. Pada bab ini, hasil penelitian dipaparkan

dalam bentuk penjelasan implementasi aplikasi yang dibuat. Pada bagian ini pula,

pengujian aplikasi dilakukan dengan menguji validasi hasil transformasi aplikasi

dengan hasil transformasi melalui perhitungan. Pengujian juga dilakukan dengan

membandingkan

framerate transformasi aplikasi dan

framerate transformasi

bawaan OpenGL.

(17)

5

BAB II

TRANSFORMASI GEOMETRI PADA RUANG TIGA DIMENSI

Untuk membangun suatu aplikasi studio yang mendukung fungsi

transformasi 3 dimensi setidaknya dibutuhan 5 bagian penting. Bagian-bagian

tersebut, yaitu pemahaman teori transformasi 3 dimensi, transformasi 3 dimensi

menggunakan OpenGL, penggunaan OpenGL API pada bahasa pemrograman

Delphi, representasi objek 3 dimensi, dan interaksi pengguna dengan aplikasi.

Pada subbab-subbab selanjutnya akan dijelaskan mengenai bagian-bagian

tersebut.

2.1

Transformasi Geometri 3 Dimensi

Teori transformasi geometri 3 dimensi memegang peranan penting karena

bagian ini merupakan ilmu dasar yang akan diimplentasikan pada program

aplikasi. Sebelum melangkah lebih jauh, sangat penting untuk mengetahui arti

dari transformasi geometri. Menurut Hearn-Baker, transformasi geometri adalah

operasi yang diberikan pada gambaran geometri dari suatu objek untuk mengubah

posisinya, orientasinya, atau ukurannya

[1]

. Jadi setiap operasi yang dapat

mengubah posisi, orientasi, dan ukuran dari gambaran objek geometri dapat

disebut sebagai transformasi geoemetri. Pada tugas akhir ini hanya akan

membahas dan menggunakan transformasi translasi, rotasi, penskalaan, dan

shearing.

Translasi, rotasi, penskalaan, dan shearing memiliki persamaan, yaitu

sam-sama dapat memindahkan verteks-verteks (titik-titik) penyusun objek geometri.

Yang membedakan keempatnya adalah cara atau bagaimana memindahkan

verteks-vereteks tersebut. Ini ditandai dengan berbedanya persamaan yang

digunakan oleh tiap-tiap transformasi tersebut.

Pada tugas akhir ini digunakan system koordinat homogen. Sistem

koordinat homogen menggunakan empat ordinat untuk menyatakan titik-titiknya.

P

= (x

p

, y

p

, z

p

, s)

(18)

Titik hasil transformasi dapat diperoleh melalui persamaan 2.1:

M

= Matriks transformasi berukuran 4x4 seperti pada persamaan 2.2.

Transformasi 3 dimensi terdiri dari beberapa fungsi transformasi, yaitu

translasi, rotasi, penskalaan, dan shearing. Transformasi-transformasi tersebut

akan dijelaskan satu per satu.

2.1.1.

Translasi

Transformasi

translasi

merupakan

transformasi

yang

berfungsi

memindahkan suatu objek dari posisi satu ke posisi lainnya melalui suatu garis

lurus

[1]

. Translasi memiliki matriks seperti pada persamaan 2.3.

Berikut contoh penggunaanya.

T

Operasi invers dapat dilakukan dengan memberikan tanda negatif (-) pada

t

x

,

(19)

7

2.1.2.

Penskalaan

Transformasi penskalaan merupakan transformasi yang berfungsi mengubah

ukuran suatu objek

[1]

. Ukurannya dapat menjadi lebih kecil atau lebih besar.

Penskalaan memiliki matriks seperti pada persamaan 2.6.

Berikut contoh penggunaanya.

S

Menurut Hearn-Baker, transformasi rotasi dilakukan dengan memindahkan

semua titik-titik dari suatu objek ke posisi yang baru dengan memutar titik-titik

tersebut dengan sudut dan sumbu putar yang ditentukan

[1]

. Rotasi memiliki

matriks seperti pada persamaan 2.9, 2.11, dan 2.13. Tiap sumbu memiliki matriks

rotasi yang bebeda.

(20)

)

Operasi invers dapat dilakukan dengan memberikan tanda negatif (-) pada

θ

.

2.1.4.

Shearing

Shearing adalah transformasi yang mendistorsi bentuk dari suatu objek

seakan-akan objek tersebut tersusun atas lapisan-lapisan yang mengalami

kemiringan (

slide

) satu sama yang lain

[1]

. Shearing memiliki matriks seperti pada

persamaan 2.15 (sumbu X), 2.17 (sumbuY), dan 2.19 (sumbu Z).

(21)

9

2.1.5.

Transformasi Berturut-turut

Transformasi berturut-turut atau transformasi komposit dapat dilakukan

dengan cara mengalikan matriks-matriks transformasi sesuai ururtan transformasi.

Misalnya suatu titik akan ditranslasi dan diskala dengan matriks

T

dam

S

, maka

matriks yang digunakan adalah matriks

M

K

=

T

·

S

Dengan

P

adalah titik awal dan

P

’ merupakan titik hasil transformasi.

2.1.6.

Rotasi Menggunakan Sumbu yang Tidak Melewati Titik Origin

Langkah-langkah yang dilakukan agar benda dapat dirotasi menggunakan

sumbu yang tidak melewati titik origin adalah sebagai berikut:

1.

Mentranslasikan objek sehingga sumbu putar melewati titik origin (gambar

2.1a).

2.

Merotasi objek sehingga sumbu putar berimpit dengan salah satu sumbu

koordinat (gambar 2.1b).

3.

Lakukan rotasi yang telah ditentukan pada sumbu koordinat yang ditentukan

pada no 2 (gambar 2.1c).

4.

Lakukan rotasi invers agar objek kembali ke orientasi semula (gambar 2.1d).

5.

Lakukan translasi invers agar objek kembali ke posisi semula (gambar 2.1e).

Y

(22)

2.1.7.

Penskalaan Menggunakan Sembarang Titik Pusat

Langkah-langkah yang dilakukan agar benda dapat diskalakan menggunakan

sembarang titik pusat (t

x

, t

y

, t

z

) adalah sebagai berikut:

1.

Lakukan translasi sebesar

T

-1

(t

x

, t

y

, t

z

). Langkah ini akan membuat titik (t

x

,

t

y

,

t

z

) berimpit dengan titik (0, 0, 0).

2.

Lakukan pensakalaan sebesar

S

(s

x

, s

y

, s

z

).

3.

Lakukan translasi sebesar

T

(-t

x

, -t

y

, -t

z

). Langkah ini akan mengembalikan

benda ke lokasi semula.

4.

Dengan demikian matriks transformasi yang diperlukan untuk melalukan

penskalaan menggunakan titik origin

O

= (0, 0, 0) sebagai titik pusat dapat

diperoleh melalui:

2.2

Transformasi 3 Dimensi pada OpenGL

OpenGL sendiri sudah menyediakan perintah-perintah untuk melakukan

transformasi. Perintah-perintah yang berhubungan dengan transformasi akan

dijelaskan secara singkat pada subbab ini.

Procedure glMatriksMode(m:GLenum);

Perintah di atas mengatur pemakaian matriks. Ada tiga macam matriks yang

dapat digunakan, yaitu:

MODELVIEW

,

PROJECTION

, dan

TEXTURE

.

MODELVIEW

adalah matriks yang digunakan untuk melakukan transformasi.

PROJECTION

(23)

11

glLoadIndentity;

Perintah di atas mengatur agar matriks yang digunakan diisi dengan matriks

identitas. Matriks indentitas adalah matriks yang elemen diagonal ke kanan bawah

berisi angka 1 dan elemen yang lain berisi 0.

Procedure glTranslated(x,y,z:GLdouble);

Procedure glTranslatef(x,y,z:GLfloat);

Procedure glTranslate(x,y,z:GLdouble);

Procedure glTranslate(x,y,z:GLfloat);

Perintah-perintah di atas menggunakan transformasi translasi matriks yang

sedang digunakan. Parameter x, y, z menyatakan besarnya translasi yang dilaluksn

pada sumbu x, y, dan z.

Procedure glRotated(angle,x,y,z:GLdouble);

Procedure glRotatef(angle,x,y,z:GLfloat);

Procedure glRotate(angle,x,y,z:GLdouble);

Procedure glRotate(angle,x,y,z:GLfloat);

Perintah-perintah di ats menggunakan rotasi untuk matriks yang sedang

digunakan. Parameter x, y, z menyatakan vektor yang digunakan sebagai sumbu

putar. Vektor sumbu dibentuk dari titik (0, 0, 0) ke (x, y, z). Apabila salah satu

dari parameter diisi dengan nilai 1 dan parameter yang lain diisi dengan 0 maka

perputaran terhadap sumbu sesuai dengan yang bernilai 1. Parameter

angle

menatakan besar sudut rotasi yang dilakukan.

Procedure glScaled(x,y,z:PGLdouble);

Procedure glScalef(x,y,z:PGLfloat);

Procedure glScale(x,y,z:GLdouble);

Procedure glScale(x,y,z:GLfloat);

Perintah-perintah di atas menggunakan transformasi penskalaan pada

matriks yang sedang digunakan. Parameter x, y, dan z menyatakan besar

penskalaan.

(24)

digunakan disusun dalam urutan berikut:

glMatriksMode(GL_MODELVIEW);

glLoadIndentity; //jika diperlukan menggunakan matriks identitas

<perintah transformasi, glTranslate, glRotate, atau glScale>

Perintah

glMatriksMode(GL_MODELVIEW)

memberitahukan OpenGL agar

perintah-perintah transformasi berikutnya diterapkan pada matriks.

Perintah-perintah transformasi yang telah disediakan oleh OpenGL akan digunakan dalam

membangun aplikasi studio, tentunya digunakan bersama-sama dengan bahasa

pemrograman Delphi. Perintah-perintah transformasi OpenGL diharapkan dapat

mempercepat membangun aplikasi.

2.3

Penggunaan OpenGL pada Delphi

Di dalam sistem operasi Windows, OpenGL diimplementasikan ke dalam 2

buah berkas, yaitu opengl32.dll dan glut32,dll. Opengl32.dll merupakan pustaka

program yang menyediakan perintah-perintah utama dari OpenGL dan glut32.dll

menyediakan perintah-perintah tambahan (utility) dari OpenGL.

OpenGL dan Delphi perlu dihubungkan sehingga transformasi 3 dimensi

menggunakan OpenGL dapat dilakukan. Untuk menghubungkannya, yaitu dengan

menggunakan file opengl.dcu yang biasanya terdapat di direktori …\lib pada

direktori Delphi. Penggunaannya cukup dengan menambahkan klausa OpenGL

pada kode program di bagian uses.

uses

OpenGL, Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs;

OpenGL bukan merupakan bagian dari system operasi Windows sehingga

diperlukan memberitahu Windows bahwa program menggunakan API dari

OpenGL. Informasi yang perlu disampaikan, yaitu:

1.

Format Pixel yang disampaikan melalui struktur data

TPIXELFORMAT-DESCRIPTOR

. Format Pixel (

pfd

) memberikan informasi mengenai jumlah

(25)

13

2.

Device Context yang merupakan perangkat yang akan digunakan oleh OpenGL

untuk menggambar.

Device context yang disediakan oleh Windows dan

rendering context yang disediakan oleh OpenGL harus dihubungkan sehingga

apa yang digambar oleh OpenGL akan ditampilkan oleh Windows.

type

TForm1 = class(TForm)

private

{ Private declarations }

rc : HGLRC; //rendering context OpenGL

dc : HDC; //device context windows

Atribut

pfd

merupakan atribut yang digunakan untuk memyimpan informasi

pixel, sedangkan

dc

merupakan atribut untuk menyimpan

device context yang

dibuat oleh Window dan atribut

rc

digunakan untuk menyimpan

rendering

context yang dibuat oleh OpenGL. Antara

device context yang dibuat melalui

windows (

dc

) dan

rendering context yang dibuat melalui OpenGL (

rc

) nantinya

akan dihubungkan melalui wglMakeCurrent.

procedure TForm1.FormCreate(Sender: TObject);

var pfd : TPIXELFORMATDESCRIPTOR;

pf : Integer;

begin

dc:=GetDC(Form1.Handle);

pfd.nSize:=sizeof(pfd);

pfd.nVersion:=1;

pfd.dwFlags:=PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL

or PFD_DOUBLEBUFFER or 0;

pfd.iPixelType:=PFD_TYPE_RGBA;

pfd.cColorBits:=32;

pfd.cDepthBits:=32;

pf :=ChoosePixelFormat(dc, @pfd);

SetPixelFormat(dc, pf, @pfd);

rc :=wglCreateContext(dc);

wglMakeCurrent(dc,rc);

(26)

Perintah

dc:=GetDC(Form1.Handle)

digunakan untuk menangkap

device

context dari Handle yang diliki oleh

Form1

dan hasilnya diberikan ke varaibel

dc

.

Perintah berikutnya mengisi struktur

pfd

dengan nilai yang diinginkan, dua

diantaranya, yaitu

iPixelType

yang menggunakan

PFD_TYPE_RGBA

untuk

mendukung warna 32 bit per

pixel dan

cDepthBits

untuk kedalaman sumbu z

sebesar 32 bit. Setelah

pfd

selesai diisi maka isi

pfd

digunakan untuk memformat

rc

dan indeks format pixel dari format yang dikembalikan melalui variabel

pf

.

Langkah selanjutnya adalah mengatur agar

device context

dc

menggunakan

format tersebut.

Rendering context dari OpenGL dibuat berdasarkan

device

context

dc

. Antara

rc

dan

dc

dihubungkan satu sama lain menggunakan

wglMakeCurrent(dc,rc)

yang menyatakan mulai saat itu OpenGL menggunakan

dc sebagai kanvas untuk menggambar.

2.4

Representasi Objek 3 Dimensi

Objek 3 dimensi disusun dengan menghubungkan sejumlah verteks (titik).

Struktur data untuk verteks 3 dimensi adalah sebagai berikut:

type

Ttitik3d = record

posX,posY,posZ:GLFloat;

end;

Garis-garis yang menghubungkan suatu kumpulan verteks-verteks disebut

sebagai

wireframe atau kerangka dan benda yang dibentuk oleh dari kumpulan

titik-titik dan garis-garis tersebut disebut sebagai Mesh.

Pada gambar 2.2 suatu objek (mesh) kubus terbentuk dari 9 buah verteks.

Verteks 0 digunakan sebagai titik pusat sedangkan verteks-verteks dari 1 sampai 8

dihubungkan dengan garis-garis membentuk kerangka kubus.

1

0

4 3

2 5

8 7

6

(27)

15

Karena suatu objek terdiri dari satu verteks atau lebih maka perlu membuat

struktur data untuk menampung informasi koordinat verteks-verteks penyusunnya.

Struktur data yang digunakan, yaitu array dengan tipe Ttitik3d yang telah

didefiniskan di atas.

verteks:array of Ttitik3d;

Jika diimplementasikan pada objek kubus di atas maka panjang arraynya adalah

sembilan.

verteks:array[0..8] of Ttitik3d;

Kubus pada gambar 2.2 dapat disusun berdasrkan data yang ad pada tabel 2.1.

Tabel 2.1 Verteks penyusun kubus.

Verteks X Y Z

0

0

0

0

1

-1 -1 1

2

1 -1 1

3

1 -1 -1

4

-1 -1 -1

5

-1 1

1

6

1

1

1

7

1

1 -1

8

-1 1 -1

2.5

Interaksi Pengguna dengan Aplikasi

Antarmuka diperlukan agar pengguna dapat berinteraksi dengan aplikasi.

Interaksi yang digunakan pada aplikasi dibagi menjadi 3, yaitu interaksi

menggunakan

button, interaksi menggunakan

keyboard, dan interaksi

menggunakan mouse.

1.

Interaksi menggunakan button

Interaksi menggunakan

button dilakukan dengan memakai

event handling

bawaan Delphi seperti

onClick, onChange, dan lain-lain untuk operasi-operasi

tertentu.

2.

Interaksi menggunakan keyboard

Interaksi menggunakan

keyboard juga dilakukan dengan memakai

event

handling bawaan Delphi. Salah satunya

event onKeyPress. Event pada

keyboard digunakan sebagai

shortcut untuk melakukan operasi tertentu,

misalnya mengatifkan mode transformasi rotasi dengan menekan tombol ‘r’.

3.

Interaksi menggunakan mouse

(28)
(29)

17

BAB III

PERANCANGAN

APLIKASI GRAFIKA KOMPUTER UNTUK

TRANSFORMASI GEOMETRI OBJEK 3 DIMENSI

Perancangan aplikasi grafika komputer untuk transformasi objek 3 dimensi

menggunakan pendekatan berorientasi objek. Langkah-langkah perancangan yang

dilakukan mengikuti model yang diutarakan oleh Pressman

[6]

, yaitu:

1.

Use case,

2.

Kartu Index CRC,

3.

Diagram Kelas,

4.

Model Hubungan Objek (Object Relationship), dan

5.

Model Tingkah Laku Objek (Object Behaviour).

3.1

Use case

Use case merupakan rangkaian skenario yang mengidentifikasikan urutan

pemakaian aplikasi yang akan dibangun

[6]

. Skenario penggunaan aplikasi grafika

komputer untuk transformasi objek 3 dimensi adalah sebagai berikut:

1.

Pengguna membuat objek geometri. Pengguna dapat memilih objek geometri

yang akan dibuat, yaitu kubus, piramid, silinder, meja, dan kursi.

2.

Pengguna melakukan transformasi terhadap objek geometri. Objek yang akan

ditransformasi dipilih terlebih dahulu kemudian pengguna menentukan

transformasi apa yang akan dilakukan. Transformasi yang dapat dilakukan,

meliputi translasi, penskalaan, rotasi, dan

shearing. Tiap-tiap transformasi

memiliki parameter-parameter tersendiri dan pengguna dapat menentukan

nilai parameter-parameter tersebut. Misalnya: Rotasi pada suatu kubus.

Pengguna dapat menentukan besar sudut rotasi dan sumbu rotasi.

3.

Pengguna menghapus objek. Pengguna memilih objek yang telah dibuat

kemudian menghapusnya.

(30)

Penskalaan

Rotasi Translasi

Shearing

Pengguna Transformasi

Buat Objek

Hapus Objek

Gambar 3.1 Diagram use case aplikasi grafika komputer untuk transformasi objek 3 dimensi.

Sistem hanya memiliki satu aktor, yaitu pengguna. Pengguna dapat

melakukan tiga

use case, yaitu membuat objek, melakukan transformasi pada

objek, dan menghapus objek.

Pada diagram terlihat bahwa use case transformasi merupakan generalisasi

dari 4 macam use case, yaitu translasi, penskalaan, rotasi, dan

shearing. Artinya,

transformasi masih dapat lebih spesifikkan, yaitu translasi, penskalaan, rotasi, atau

pun shearing.

3.2

Kartu Index CRC (Class-Responsibility-Collaborator)

Setelah melakukan analisis

use case, selanjutnya adalah membuat kartu

index CRC. Pemodelan CRC memberikan cara sederhana untuk mengidentifikasi

dan mengumpulkan kelas-kelas yang relevan

[6]

yang nantinya akan digunakan

untuk aplikasi grafika komputer untuk transformasi objek 3 dimensi.

(31)

19

Tabel 3.1 Kartu index CRC kelas objek geometri.

Kelas:Objek Geometri

Tanggung Jawab: Kolaborator:

-Atribut:

• nama

• index

• jenis

• pusat

• jumTitik

• titik

• sudut

• Aktif

Operasi:

• Gambar

Tabel 3.2 Kartu index CRC kelas kubus.

Kelas:Kubus

Tanggung Jawab: Kolaborator:

-Atribut:

• Sisi

Operasi:

• Create

• Gambar

Tabel 3.3 Kartu index CRC kelas piramid.

Kelas:Piramid

Tanggung Jawab: Kolaborator:

-Atribut:

• Tinggi

• Sisi

Operasi:

• Gambar

• Create

Tabel 3.4 Kartu index CRC kelas silinder.

Kelas:Silinder

Tanggung Jawab: Kolaborator:

-Atribut:

• Radius

• Tinggi

Operasi:

• Gambar

(32)

Tabel 3.5 Kartu index CRC kelas meja.

Kelas:Meja

Tanggung Jawab: Kolaborator:

-Atribut:

• -

Operasi:

• Gambar

• Create

Tabel 3.6 Kartu index CRC kelas kursi.

Kelas:kursi

Tanggung Jawab: Kolaborator:

-Atribut:

• -

Operasi:

• Gambar

• Create

Kelas objek geometri dapat diturunkan menjadi subkelas-subkelas objek

geometri seperti kelas kubus, kelas piramid, kelas silinder, kelas meja, dan kelas

kursi. Karena merupakan turunan dari kelas objek geometri, maka kelas-kelas

tersebut memiliki atribut yang sama dengan kelas objek geometri. Selain itu,

tiap-tiap kelas memiliki atribut tersendiri yang membedakannya dengan kelas lain

yang berasal dari kelas induk yang sama, misalnya objek kubus memiliki atribut

ukuran sisi sedangkan piramid memiliki atribut tinggi dan sisi untuk alasnya.

Kelas transformasi memiliki operasi-operasi seperti yang ditunjukkan tabel

3.2, yaitu operasi translasi, rotasi, penskalaan, shearing, dan lain-lain.

Tabel 3.7 Kartu index CRC Transformasi.

Kelas: Transformasi

Tanggung Jawab: Kolaborator:

• Objek Geometri

Atribut:

• Matriks

Operasi:

• PerkalianMatriks

• MatriksIdentitas

• Translasi

• Penskalaan

• Rotasi

• Shearing

• Transform

• nolkanTransformasi

(33)

21

3.3

Diagram Kelas

Diagram kelas (gambar 3.2) dibuat dari kartu index CRC pada subbab 3.2.

Diagram kelas memberikan gambaran tentang kelas-kelas apa saja yang perlu

dibuat untuk membangun aplikasi, lengkap dengan atribut dan operasinya. Pada

gambar 3.2, kelas geometri memiliki 5 kelas turunan, yaitu kubus, silinder,

piramid, meja, dan kursi. Kelas transformasi tidak memiliki turunan tetapi

memiliki operasi-operasi untuk melakukan transformasi 3 dimensi.

Kubus sisi : Single

gambar() create()

Silinder radius : Single tinggi : Single

gambar() create()

Piramid tinggi : Single sisi : Single

gambar()

Kursi

gambar() create() Meja

gambar() create()

Transformasi Matriks

perkalianMatriks() MatriksIdentitas() Translasi() Penskalaan() Rotasi() Shearing() Transform() nolkanTransformasi() ambilPos3d() Geometri

nama : String index : Integer jenis : String pos isi : Single sudut : Single pus at : Single

gambar()

1..* 1

Mentransformasi

1 1..*

Gambar 3.2 Diagram kelas aplikasi grafika komputer untuk

transformasi objek 3 dimensi.

3.4

Model Hubungan Objek

Model hubungan objek (object relationship model) dapat digambarkan

dengan menggunakan diagram runtun (sequence diagram). Dengan diagram

runtun, interaksi antarobjek dapar diperlihatkan. Pada gambar 3.3 terdapat 3

skenario, yaitu menciptakan objek geometri, mentransformasi objek geometri, dan

menghapus objek geometri.

(34)

: Pengguna

Antarmuka : Transformasi : Geometri Layar

Memilih objek yang akan dibuat dan nilai atributnya

Membuat objek geometri gambar objek pada layar Menampilkan objek geometri

Memilih jenis transformasi dan

nilainya Memberi nilai sesuai input

Mentransformasi objek geometri

Gambar objek pada

layar

Menampilkan objek geometri

hasil transformasi

Memilih objek yang

akan

dihapus Menghapus objek geometri Hapus

objek pada layar Meampilkan hasil menghapus objek geometri

Gambar 3.3Diagram runtun aplikasi grafika komputer untuk

transformasi objek 3 dimensi.

Untuk

melakukan

transformasi

pada

objek

geometri,

pengguna

mendefinisikan transformasi yang akan dilakukan beserta nilai-nilainya pada

antarmuka. Antarmuka kemudian memberi nilai-nilai tersebut ke objek

transformasi. Objek transformasi kemudian menerapkan transfomasi pada objek

geometri. Akibatnya, objek berubah pada bentuk, posisi, atau sudut. Objek

digambar ulang pada layar dan hasilnya ditampilkan pada pengguna.

(35)

23

3.5

Model Tingkah Laku Objek

Gambar 3.4 merupakan diagram

statechart yang menggambarkan perilaku

dua objek, yaitu objek transformasi (a) dan objek geometri (b). Model tingkah

laku objek menunjukkan bagaimana sistem akan merespon kejadian atau stimulus

eksternal.

(a)

Objek geometri tercipta

Mulai

Menunggu transformasi selanjutnya

Objek geometri terhapus Selesai

Mentransformasi objek geometri

Posisi, sudut, dan bentuk yang baru

Menghapus objek geom etri Membuat objek geom etri

(b)

Gambar 3.4 Diagram statechart aplikasi grafika komputer

untuk transformasi objek 3 dimensi: (a) diagram statechart objek transformasi (b) diagram statechart objek geometri.

Ketika aplikasi dijalankan, operasi membuat objek transformasi

mengakibatkan objek transformasi tercipta. Objek transformasi kemudian

menunggu perintah transformasi untuk mentransformasi objek geometri. Pada saat

aplikasi ditutup, maka objek transformasi akan terhapus.

Operasi buat objek geometri akan membuat objek geometri tercipta. Operasi

transformasi (rotasi, translasi, penskalaan, dan

shearing) akan mentransformasi

objek tersebut sehingga nilai atribut-atribut seperti posisi dan ukuran akan

berubah. Setelah operasi transformasi dilakukan, objek akan menunggu

Objek transformasi tercipta

Selesai Mulai

Menunggu perintah transformasi selanjutnya

Objek transformasi terhapus Membuat

objek transformasi

Menutup Aplikasi

(36)

transformasi selanjutnya. Objek akan terhapus jika dilakukan operasi hapus objek

pada objek tersebut.

3.6

Desain Antarmuka

Aplikasi grafika komputer untuk transformasi objek 3 dimensi terdiri dari

satu form utama. Form utama terdiri dari beberapa bagian, yaitu

menubar,

toolbar, tab objek, layar, dan

statusbar.

Menubar berisi menu-menu untuk

melakukan operasi-operasi pada aplikasi.

Toolbar berisi tombol-tombol untuk

melakukan operasi-operasi pada aplikasi. Layar digunakan untuk menampilkan

gambar 3 dimensi. Tab objek digunakan untuk membuat objek geometri yang

dikehendaki.

Statusbar digunakan untuk melihat status-status seperti posisi

mouse, mode transformasi yang sedang aktif, dan sumbu koordinat yang sedang

aktif. Perancangan antarmuka aplikasi dapat dilihat pada gambar 3.5.

Menu Bar

Tool Bar

Tab

Objek

Layar

Status Bar

Gambar 3.5 Desain antarmuka aplikasi grafika komputer

(37)

25

BAB IV

IMPLEMENTASI DAN PENGUJIAN APLIKASI GRAFIKA KOMPUTER

UNTUK TRANSFORMASI 3 DIMENSI

Bab IV membahas mengenai implementasi dan pengujian pada aplikasi

grafika komputer untuk transformasi 3 dimensi. Implementasi adalah bagaimana

mewujudnyatakan hasil dari perancangan sehingga menghasilkan suatu aplikasi

yang dapat bekerja dengan baik. Setelah itu, pengujian dilakukan untuk

mengetahui apakah aplikasi sudah dapat bekerja sebagaimana mestinya atau

belum. Jika hasilnya belum maka aplikasi masih perlu disempurnakan.

4.1.

Implementasi

Implementasi aplikasi grafika komputer untuk transformasi 3 dimensi

memiliki 4 bagian penting, yaitu implementasi tampilan aplikasi, implementasi

objek geometri, implementasi vektor, dan implementasi transformasi 3 dimensi.

4.1.1.

Implementasi Tampilan Aplikasi

Gambar 4.1 Tampilan aplikasi grafika komputer untuk transformasi geometri.

(38)

transformasi 3 dimensi yang terdiri dari satu form utama. Form utama terdiri dari

beberapa bagian, yaitu toolbar, menu, tab objek, layar, log, dan statusbar.

Gambar 4.2 Toolbar dan menu aplikasi.

Gambar 4.2 menujukkan tampilan toolbar dan menu. Toolbar terdiri dari 10

tombol dan 1

combo box. Button transalasi untuk melakukan translasi, tombol

penskalaan untuk transformasi penskalaan, tombol rotasi untuk rotasi, tombol

shearing untuk operasi

shearing, tombol

reset untuk kembali ke mode awal,

button zoom untuk memperbesar atau memperkecil tampilan pada layar, tombol

rotasi kamera untuk memutar kamera dengan sumbu pada titik fokus kamera,

tombol rotasi fokus untuk memutar titik fokus kamera, tombol geser kamera

digunakan untuk menggeser layar, dan tombol fokus ke objek digunakan untuk

memindahkan fokus kamera ke objek terpilih, dan tombol

reset kamera untuk

mengembalikan kamera ke posisi awal.

Combo box

digunakan untuk memilih

sumbu atau arah vektor.

Gambar 4.3 Tampilan tab-tab untuk objek kubus, kursi, meja, piramida, silinder,

(39)

27

Gambar 4.3 adalah tampilan tab-tab objek. Tab piramida unuk membuat

piramida, tab kubus untuk membuat kubus, tab silinder untuk membuat silinder,

tab meja untuk membuat meja, tab kursi untuk membuat kursi, dan tab kamera

untuk memindah posisi kamera atau titik fokusnya, dan tab OBJ Loader untuk

memuat berkas OBJ.

Gambar 4.4 Status Bar.

Gambar 4.4 memperlihatkan

statusbar.

Statusbar

berfungsi untuk

menampilkan posisi mouse pada koordinat

world, posisi mouse pada layar, mode

transformasi yang sedang aktif, arah vektor/sumbu putar, dan framerate.

Gambar 4.5 Tampilan popup menu klik kanan.

Gambar 4.5 memperlihatkan

popup menu aplikasi. Menu terdiri dari

beberapa pilihan. Pilihan translasi akan menampilkan form translasi. Pilihan rotasi

akan menampilkan form rotasi. Pilihan penskalaan akan menampilkan form

penskalaan. Pilihan

shearing akan menampilkan form

shearing. Pilihan hapus

akan menghapus objek terpilih. Form-form tersebut dapat dilihat pada gambar 4.6.

(40)

4.1.2.

Implementasi Objek Geometri

a.

Piramida

Geometri piramida (gambar 4.7) terdiri dari 7 titik dengan titik 2 dan 6 berada

pada posisi yang sama.

2 dan 6

0

5 4

3 1

Gambar 4.7 Objek geometri piramida.

Inisialisasi nilai koordinat titik-titik tersebut dilakukan ketika objek piramida

diciptakan.Ini dilakukan pada konstruktor

create

.

constructor Tpiramid.create(pTinggi,pSisi:GLfloat;

titikPusat:Ttitik3d);

Konstruktor ini membutuhkan nilai tinggi, sisi, dan titik pusat yang akan

dilewatkan pada parameter

pTinggi

,

pSisi

, dan

titikPusat

. Dari ketiga nilai

tersebut, konstruktor akan menghitung nilai-nilai untuk setiap titik. Detil

prosesnya dapat dilihat pada source code di lampiran A.

Setelah setiap titik memiliki nilai koordinat, piramida digambar

menggunakan prosedur

Gambar

.

procedure TPiramid.Gambar;

Pada prosedur gambar, bagian atas piramida digambar dahulu kemudian

bagian alasnya. Bagian atas piramida digambar dengan perintah berikut:

glBegin(GL_TRIANGLE_FAN);

for i:=1 to 6 do

glVertex3f(titik[i].posX,titik[i].posY,titik[i].posZ);

glEnd;

Bagian alas piramida digambar dengan perintah berikut:

glBegin(GL_QUADS);

for i:=2 to 5 do

glVertex3f(titik[i].posX,titik[i].posY,titik[i].posZ);

(41)

29

b.

Kubus

Geometri kubus (gambar 4.8) terdiri dari 9 titik. Inisialisasi nilai koordinat

titik-titik tersebut dilakukan ketika objek kubus diciptakan.

1

0

4 3

2 5

8 7

6

Gambar 4.8 Objek geometri kubus.

Ini dilakukan pada konstruktor

create

.

constructor Tkubus.create(pSisi:GLFloat;

titikPusat:Ttitik3d);

Konstruktor ini membutuhkan nilai tinggi, sisi, dan titik pusat yang akan

dilewatkan pada parameter

pSisi

dan

titikPusat

. Dari kedua nilai tersebut,

konstruktor akan menghitung nilai-nilai untuk setiap titik. Detil prosesnya dapat

dilihat pada source code di lampiran A.

Setelah setiap titik memiliki nilai koordinat, piramida digambar

menggunakan prosedur

Gambar

.

procedure TKubus.Gambar;

Pada prosedur gambar, bagian depan, belakang, kiri, kanan, atas, dan bawah

kubus dibuat berurutan. Bagian depan kubus digambar dengan perintah berikut:

glBegin(GL_QUADS);

glVertex3f(titik[1].posX,titik[1].posY,titik[1].posZ);

glVertex3f(titik[2].posX,titik[2].posY,titik[2].posZ);

glVertex3f(titik[6].posX,titik[6].posY,titik[6].posZ);

glVertex3f(titik[5].posX,titik[5].posY,titik[5].posZ);

Bagian belakang kubus digambar dengan perintah berikut:

glVertex3f(titik[4].posX,titik[4].posY,titik[4].posZ);

glVertex3f(titik[3].posX,titik[3].posY,titik[3].posZ);

glVertex3f(titik[7].posX,titik[7].posY,titik[7].posZ);

glVertex3f(titik[8].posX,titik[8].posY,titik[8].posZ);

(42)

glVertex3f(titik[4].posX,titik[4].posY,titik[4].posZ);

glVertex3f(titik[1].posX,titik[1].posY,titik[1].posZ);

glVertex3f(titik[5].posX,titik[5].posY,titik[5].posZ);

glVertex3f(titik[8].posX,titik[8].posY,titik[8].posZ);

Bagian kanan kubus digambar dengan perintah berikut:

glVertex3f(titik[2].posX,titik[2].posY,titik[2].posZ);

glVertex3f(titik[3].posX,titik[3].posY,titik[3].posZ);

glVertex3f(titik[7].posX,titik[7].posY,titik[7].posZ);

glVertex3f(titik[6].posX,titik[6].posY,titik[6].posZ);

Bagian atas kubus digambar dengan perintah berikut:

glVertex3f(titik[5].posX,titik[5].posY,titik[5].posZ);

glVertex3f(titik[6].posX,titik[6].posY,titik[6].posZ);

glVertex3f(titik[7].posX,titik[7].posY,titik[7].posZ);

glVertex3f(titik[8].posX,titik[8].posY,titik[8].posZ);

Bagian bawah kubus digambar dengan perintah berikut:

glVertex3f(titik[1].posX,titik[1].posY,titik[1].posZ);

glVertex3f(titik[2].posX,titik[2].posY,titik[2].posZ);

glVertex3f(titik[3].posX,titik[3].posY,titik[3].posZ);

glVertex3f(titik[4].posX,titik[4].posY,titik[4].posZ);

glEnd;

c.

Silinder

Geometri silinder (gambar 4.9) terdiri dari 33 titik. Inisialisasi nilai koordinat

titik-titik tersebut dilakukan ketika objek silinder diciptakan.

Gambar 4.9 Objek geometri silinder.

Ini dilakukan pada konstruktor

create

.

constructor Tsilinder.Create(pRadius,pTinggi:GLfloat;

titikPusat:Ttitik3d);

1

8 18

12 19 18

3 17

2

24

(43)

31

Konstruktor ini membutuhkan nilai tinggi, sisi, dan titik pusat yang akan

dilewatkan pada parameter

pTinggi

,

pRadius

, dan

titikPusat

. Dari ketiga nilai

tersebut, konstruktor akan menghitung nilai-nilai untuk setiap titik. Detil

prosesnya dapat dilihat pada source code di lampiran A.

Setelah setiap titik memiliki nilai koordinat, silinder digambar

menggunakan prosedur

Gambar

.

procedure TSilinder.Gambar;

Pada prosedur gambar, bagian atas, alas, dan badan silnder dibuat

berurutan. Bagian tutup silinder digambar dengan perintah berikut:

glBegin(GL_POLYGON);

for i:=1 to 16 do

begin

glVertex3f(titik[i].posX,titik[i].posY,titik[i].posZ);

end;

glEnd;

Bagian alas silinder digambar dengan perintah berikut:

glBegin(GL_POLYGON);

for i:=17 to 32 do

begin

glVertex3f(titik[i].posX,titik[i].posY,titik[i].posZ);

end;

glEnd;

Bagian badan silinder digambar dengan perintah berikut:

i:=1;

glBegin(GL_QUAD_STRIP);

while i<=16 do

begin

glVertex3f(titik[i].posX,titik[i].posY,titik[i].posZ);

glVertex3f(titik[i+16].posX,titik[i+16].posY,

titik[i+16].posZ);

i:=i+1;

end;

glVertex3f(titik[32].posX,titik[32].posY,titik[32].posZ);

glVertex3f(titik[1].posX,titik[1].posY,titik[1].posZ);

(44)

d.

Daftar Geometri

Objek-objek geometri yang dibuat perlu ditampung sehingga objek-objek

dapat dikelola lebih mudah. Misalnya mentranfomasi hanya objek yang aktif

terpilih, menghapus objek-objek tertentu, dan sebagainya. Objek-objek tersebut

disimpan pada daftar geometri yang berwujud kelas TdaftarGeometri.

Objek-objek tersebut disimpan varaibel f yang bertipe Tlist. Tlist merupakan kelas linked

list bawaan OpenGL.

constructor TDaftarGeometri.Create(Owner:Tcomponent);

begin

f:=TList.Create;

end;

Constructor digunakan untuk inisialisasi pada saat objek dari kelas

TdaftarGeometri dibuat. Pada saat contructor dipanggil, objek f dibuat dari kelas

Tlist.

destructor TDaftarGeometri.Destroy;

begin

f.Free;

end;

Destructor digunakan untuk menghapus objek dari kelas TdaftarGeometri.

Pada saat destructor dipanggil, variabel f akan dikosongkan. Dengan demikian

semua informasi objek yan disipan pada f akan terhapus.

procedure TDaftarGeometri.TambahGeometri(var O:TGeometri);

var item:TGeometri;i:integer;

begin

i:=f.Add(O);

FormUtama.sMemo1.Lines.add('Index Objek: '+IntToStr(i));

item:=f.Items[i];

item.index:=i;

f.Items[i]:=item;

end;

(45)

33

yang berisi objek dari kelas Tgeometri yang baru dibuat. Keempat, atribut index

dari item kemudian diisi dengan nilai i. Kelima, setelah atribut index terisi, nilai

item kemudian diberikan kembali ke f.items[i].

procedure TDaftarGeometri.Gambar;

var index:integer;

item:Tgeometri;

begin

for index:=0 to f.Count-1 do

begin

item:=f.Items[index];

glLoadName(item.index+100);

item.Gambar;

glEnd();

end;

end;

Prosedur Gambar digunakan untuk menggambarkan selurug objek geometri

yang terdapat pada daftar geometri. Setiap objek yang akan digambarkan diberi

nama dengan perintah

glLoadName(item.index+100)

. Nama yang diberikan

akan digunakan pada saat objek tersebut diklik pada layar. Jika nama yang

dihasilkan ketika mengklik objek sama dengan nilai index objek dikurangi 100,

maka objek akan menjadi aktif.

4.1.3.

Implementasi Vektor

Transformasi membutuhkan operasi vektor. Operasi vektor yang digunakan

pada aplikasi ini, yaitu:

1.)

Mengubah koordinat 3 dimensi menjadi vektor 3 dimensi. Operasi ini

dinyatakan dalam bentuk fungsi

buatVektor

.

function BuatVektor(x,y,z:real):Ttitik3d;

var va:Ttitik3d;

begin

va.posX:=x; va.posY:=y; va.posZ:=z;

result:=va;

end;

2.)

Menghitung panjang vektor. Operasi ini dinyatakan dalam bentuk fungsi

PanjangVektor

.

function PanjangVektor(va:Ttitik3d):real;

(46)

Result:=abs(sqrt(va.posx*va.posx+va.posy*va.posy+

va.posz*va.posz));

end;

3.)

Normalisasi vektor. Operasi ini dinyatakan dalam bentuk fungsi

Normalisasi

.

function Normalisasi(va:Ttitik3d):Ttitik3d;

var l:real; v:Ttitik3d;

begin

l:=PanjangVektor(va);

if l=0 then exit

else

begin

v.posx:=va.posx/l;

v.posy:=va.posy/l;

v.posz:=va.posz/l;

result:=v;

end;

end;

4.)

Operasi

dot product. Operasi ini dinyatakan dalam bentuk fungsi

DotProduct

.

function DotProduct(va,vb:Ttitik3d):real;

var s:real;

begin

s:=va.posx*vb.posx+va.posy*vb.posy+va.posz*vb.posz;

result:=s;

end;

5.)

Operasi

cross product. Operasi ini dinyatakan dalam bentuk fungsi

CrossProduct

.

function CrossProduct(va,vb:Ttitik3d):Ttitik3d;

var vs:Ttitik3d;

begin

vs.posx:=(va.posy*vb.posz)-(va.posz*vb.posy);

vs.posy:=(va.posz*vb.posx)-(va.posx*vb.posz);

vs.posz:=(va.posx*vb.posy)-(va.posy*vb.posx);

result:=vs;

(47)

35

4.1.4.

Implementasi Transformasi

Dalam mengimplementasikan transformasi diperlukan beberapa operasi

seperti perkalian matriks, mengidentitaskan matriks, translasi, penskalaan, rotasi,

dan

shearing. Operasi-operasi tersebut dibuat dalam bentuk prosedur-prosedur

seperti berikut.

a.

Perkalian Matriks

Perkalian matriks dibutukan untuk melakukan transformasi geometri.

Misalnya mengalikan matriks translasi dengan matriks penskalaan untuk

transformasi berturut-turut. Operasi perkalian matriks dinyatakan dalam bentuk

prosedur

PerkalianMatriks

.

procedure TTransformasi.PerkalianMatriks(Matriks1,Matriks2:

Matriks4x4;var Matriks3:Matriks4x4);

var

baris,kolom:byte;

matriksTemp:Matriks4x4;

begin

for baris:=0 to 3 do

begin

for kolom:=0 to 3 do

begin

matriksTemp[baris,kolom]:=Matriks1[baris,0]*Matriks2

[0,kolom]+

Matriks1[baris,1]*Matriks2[1,kolom]+

Matriks1[baris,2]*Matriks2[2,kolom]+

Matriks1[baris,3]*Matriks2[3,kolom];

end;

end;

for baris:=0 to 3 do

for kolom:=0 to 3 do

Matriks3[baris,kolom]:=matriksTemp[baris,kolom];

end;

b.

Mantriks Identitas

Matriks identitas digunakan untuk menolkan suatu matriks transformasi.

Operasi MatriksIdentitas dinyatakan dalam bentuk prosedur

MatriksIdentitas

.

(48)

begin

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

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

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

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

end;

c.

Translasi

Persamaan tranasformasi translasi yang terdapat pada persamaan 2.3 dan 2.4

dibuat ke dalam bentuk prosedur

translasi

di bawah ini. Prosedur ini digunakan

untuk mentranslasikan suatu titik sebesar parameter

x

,

y

, dan

z

-nya.

procedure TTransformasi.Translasi(x,y,z:real);

var matriksTranslasi:Matriks4x4;

begin

MatriksIdentitas(MatriksTranslasi);

MAtriksTranslasi[3,0]:=x;

MAtriksTranslasi[3,1]:=y;

MAtriksTranslasi[3,2]:=z;

PerkalianMatriks(MAtriks,MAtriksTranslasi,MAtriks);

end;

d.

Penskalaan

Persamaan transformasi penskalaan yang terdapat pada persamaan 2.5 dan

2.6 dibuat ke dalam bentuk prosedur

penskalaan

di bawah ini. Prosedur ini

digunakan untuk menskalakan suatu titik sebesar parameter sx,

sy

, dan

sz

dengan

titik acuan

xc

,

xy

, dan

xz

.

procedure TTransformasi.Penskalaan(sx,sy,sz,xc,yc,zc:real);

var matriksPenskalaan:Matriks4x4;

begin

MatriksIdentitas(matriksPenskalaan);

Translasi(-xc,-yc,-zc);

matriksPenskalaan[0,0]:=sx;

matriksPenskalaan[1,1]:=sy;

matriksPenskalaan[2,2]:=sz;

PerkalianMatriks(Matriks,matriksPenskalaan,Matriks);

Translasi(xc,yc,zc);

Gambar

Gambar 1.1 Aplikasi komputer grafis: Blender.
Gambar 1.2  3DS Max 8: Aplikasi Penampil Objek 3 Dimensi.
Gambar 2.2 Objek geometri kubus.
Tabel 2.1 Verteks penyusun kubus.
+7

Referensi

Dokumen terkait

Pada grafika komputer, gambar dua dimensi dihasilkan komputer melalui proses yang dapat dianalogikan dengan proses pembentukan gambar pada sistem kamera, mikroskop,

10 Melakukan proses transformasi obyek tiga dimensi pada scene TumozMatrix yang merupakan hasil gabungan transformasi pada seluruh scene. Menampilkan transformasi dan

Pada grafika komputer, gambar dua dimensi dihasilkan komputer melalui proses yang dapat dianalogikan dengan proses pembentukan gambar pada sistem kamera, mikroskop,

Hasil penelitian ini adalah aplikasi multimedia sebagai media pembelajaran grafika komputer pada materi pengenalan OpenGL bagi mahasiswa Program Studi Teknik Informatika di

Pada teknik sebelumnya, yang diinterpolasi adalah intensitas pada titik-titik sudut penyusun poligon yang sebelumnya telah dihitung terlebih dahulu, pada teknik

Ilmu tentang ruang berawal dari geometri, yaitu geometri Euclid dan trigonometri dari ruang 3 dimensi(yang dapat diterapkan ke dimensi lainnya, karena pada matematika modern,

Politeknik Negeri Sriwijaya BAB II TINJAUAN PUSTAKA 2.1 Teori Judul 2.1.1 Pengertian Aplikasi Menurut Indrajani 2004:8, “Aplikasi adalah program yang menentukan aktivitas

Penerapan grafika komputer pada berbagai bidang kehidupan BAB II PEMBAHASAN 2.1 Pengertian Elektronika Digital Grafika komputer adalah bidang dari komputasi visual dimana