You are on page 1of 20

TRANSFORMASI

3 DIMENSI

Disusun Oleh :

TI - 0801029

Muhammad Furqan. Q. Ts.


KATA PENGANTAR

Puji dan syukur dipanjatkan ke hadirat Alloh Tuhan Semesta Alam, yang telah
memberikan kesehatan dan mengaruniakan berkat-Nya, sehingga penyusunan
Makalah yang berjudul : “Transformasi 3 Dimensi”, dapat diselesaikan oleh
penulis dengan baik.

Karya ini disusun untuk memberikan pengetahuan yang baru dan lebih
mendalam kepada para pembaca mengenai pembuatan objek grafik atau
gambar yang tampak lebih nyata dengan menggunakan program komputer
dengan memperhitungkan model-model proyektif dan perspektif. Penulis
berharap agar kiranya, setelah selesai membaca makalah ini, pembaca mampu
menerapkan prinsip-prinsip penggambaran objek grafik 3 dimensi dengan
menggunakan library openGL secara terstruktur dan terkonsep, mulai dari
penyusunan dan pendeklarasian struktur data titik dan face, hingga pemodelan
dan penggambaran objek grafik 3 dimensi dengan menggunakan prosedur serta
struktur data yang telah dideklarasikan sebelumnya.

Penulis menyadari bahwa makalah ini masih sangat jauh dari kesempurnaan.
Masih terdapat banyak kesalahan-kesalahan maupun kekeliruan-kekeliruan yang
dibuat oleh penulis selama menyusun makalah ini. Oleh karenanya, penulis
memohon kritik dan saran yang membangun dari para pembaca sekalian agar
nantinya dapat menyusun karya-karya yang lebih baik di masa mendatang.

Akhir kata, penulis mengucapkan terima kasih kepada pihak-pihak yang turut
mengambil bagian dalam penyusunan karya ini. Semoga karya ini mampu
memberikan informasi yang bermanfaat bagi para pembaca yang tertarik di

i|Page
bidang pemodelan 3 dimensi dan mereka-mereka yang baru mau mulai untuk
mempelajari dan mendalami bidang ini.

Bandung, 10 Juli 2010

ii | P a g e
DAFTAR ISI

KATA PENGANTAR.......................................................................
i

DAFTAR ISI ......................................................................... iii

PENDAHULUAN ......................................................................... 1

PEMBAHASAN ......................................................................... 3

A. PENDAHULUAN................................................. 3

B. TRANSLASI.......................................................
4

C. SCALING...........................................................
5

D. ROTASI terhadap Sumbu x............................... 6

E. ROTASI terhadap Sumbu y............................... 8

F. ROTASI terhadap Sumbu z............................... 9

PERKALIAN MATRIKS....................................................................
11

A....................................Perkalian Matriks dengan Matriks


11

B.....................................Perkalian Matriks dengan Vektor


12

PENUTUP .........................................................................
21

iii | P a g e
DAFTAR PUSTAKA........................................................................
23

iv | P a g e
PENDAHULUAN

Pada saat pertama kali ditemukan, komputer digunakan terutama sebagai alat
bantu untuk memproses hitung-menghitung. Dalam perkembangan selanjutnya,
data yang harus ditangani bertambah banyak. Hal itu tentu menimbulkan
persoalan baru, yakni bagaimana data yang sangat banyak bisa ditangani dan
disajikan dengan cara lebih efisien dan efektif. Memang, komputer bisa
mencetak hasil keluaran hingga berates-ratus halaman, bahkan beribu-ribu
halaman jika diperlukan. Meskipun demikian, tentu akan sangat membosankan
bila orang harus membaca laporan-laporan yang sangat panjang, yang tentu saja
akan memakan banyak waktu. Kemungkinan terjadinya kesalahan menjadi lebih
besar. Jelasnya, mereka yang membaca laporan-laporan tersebut harus benar-
benar tahu arti sesungguhnya dari angka-angka yang tersaji di dalamnya.

Untuk menangani masalah tersebut, dikembangkan satu alat bantu yang bisa
dipakai untuk menyajikan data dalam jumlah yang sangat besar ke dalam
sebuah bagan sehingga memudahkan pemahaman. Bahkan ada pepatah yang
mengatakan bahwa sebuah gambar lebih bermakna dari satu juta angka.
Keberadaan alat bantu tersebut, pada saat-saat tertentu dan untuk keperluan
tertentu, menyebabkan penggunaan bagan lebih disukai dibandingkan bila hanya
melihat deretan angka yang sangat membosankan. Sejalan dengan hal tersebut,
para ahli komputer telah mengembangkan perangkat yang bisa membuat
komputer semakin pandai, yakni dengan menambahkan kemampuan grafis.
Dengan demikian, bisa dikatakan bahwa semua komputer kini memiliki
kemampuan grafis. Kemudian, lahirlah apa yang disebut grafika komputer
(computer graphics).

1|Page
Grafika komputer pada dasarnya adalah suatu bidang ilmu komputer yang
mempelajari cara-cara untuk meningkatkan dan memudahkan komunikasi antara
manusia dengan mesin (komputer) dengan jalan membangkitkan, menyimpan,
dan memanipulasi gambar model suatu objek menggunakan komputer. Grafika
komputer memungkinkan kita untuk berkomunikasi lewat gambar-gambar,
bagan-bagan, dan diagram-diagram.

Dalam makalah ini kita akan melihat lebih banyak mengenai objek grafik yang
bersifat lebih hidup dan lebih nyata. Kita akan lebih banyak berbicara dan
mengulas masalah-masalah transformasi dari grafik 3 dimensi meliputi translasi,
scaling, rotasi (sumbu x, y, dan z), sehingga gambar atau objek yang kita
hasilkan bisa digunakan di berbagai jarak dan perubahan.

Oleh karenanya diharapkan, dengan adanya pemodelan dan penggambaran


dengan konsep yang seperti demikian, penyajian data dapat menjadi lebih
mudah dipahami oleh karena bentuk penyajiannya yang jauh lebih menarik dan
lebih hidup atau nyata. Sehingga target pencapaian utama dari sebuah alat
pengolah data yang populer dengan istilahnya “komputer” bisa tercapai dengan
maksimal, yakni mengolah data menjadi informasi yang mudah untuk dipahami
dan dimengerti oleh masyarakat secara umum dan luas.

2|Page
PEMBAHASAN

A. PENDAHULUAN

Matriks transformasi adalah matriks yang membuat


sebuah objek mengalami perubahan, baik berupa perubahan
posisi maupun perubahan ukuran. Matriks transformasi 3D
dinyatakan dalam ukuran 4x4, di mana kolom ke-4 digunakan
untuk menyediakan tempat untuk proses transformasi.

a11 a12 a13 a14 


a 21 a 22 a 23 a 24 
A=  
a31 a32 a33 a34 
 
a 41 a 42 a 43 a 44 

Transformasi 3D dapat dilakukan dengan menggunakan


perkalian antara matriks transformasi dan vektor posisi dari
setiap titik pada objek. Hasil transformasi ini masih berupa
vektor. Untuk lebih mudah dalam perkalian matriks, maka dapat
kita ciptakan matriks awal yaitu matriks identitas, sebagai
berikut:

Matriks Identitas :
1 0 0 0
0 1 0 0
I=  
0 0 1 0
 
0 0 0 1

Dengan implementasi dalam program sbb:

3|Page
matriks identitas(void) {

int i,j;

matriks mat;

for (i=0;i<4;i++) {

for (j=0;j<4;j++) {

if (i==j)

mat.m[i][j] = 1;

else

B. TRANSLASI

Translasi adalah perpindahan objek dari titik P(x,y) ke


titik P’(x’,y’) secara linier. Dalam translasi 3D diperlukan tiga
parameter yaitu pemindahan ke arah sumbu x, pemindahan ke
arah sumbu y, dan pemindahan ke arah sumbu z.
Tranlasi (dx,dy,dz) didefinisikan dengan:

x’ = x+dy
y’ = y+dy
z’ = z+dy

atau dapat ditulis dengan:

 x'  x  dx 
 y ' =  y  + dy 
     

z '  z   dz 

Proses translasi dengan menggunakan operasi matriks dapat


ditulis dengan:

x'   x + dx  1.x + 0. y + 0.z + dx .1


 y '  y + dy  0.x +1. y + 0.z + dy .1
 = = 
 z '   z + dz  0.x + 0. y +1.z + dz .1
     
 1   1   0.x + 0. y + 0.z +1.1 

4|Page
1 0 0 dx 
0 1 0 dy 
 
0 0 1 dz 
 
0 0 0 1

Sehingga matriks transformasi dari translasi:

1 0 0 dx 
0 1 0 dy 
T=  
0 0 1 dz 
 
0 0 0 1

Dengan implementasi dalam program sebagai berikut:

matriks translasi(float dx, float dy, float dz) {

matriks trans = identitas();

trans.m[0][3] = dx;

trans.m[1][3] = dy;

trans.m[2][3] = dz;

C. SCALING

Scaling m adalah perpindahan objek dari titik P ke titik P’


dimana jarak titik P’ adalah m kali titik P.
Proses scaling dapat didefinisikan dengan:

x’ = mx x
y’ = my y
z’ = mz z
Proses scaling dengan menggunakan definisi vektor3D dapat
dituliskan dengan:


v1  mx 0 0v1 
v2 =  0 my 0 
   v 2

1   0 0 1

1 

5|Page
x' mx .x  mx .x + 0. y + 0.z + 0.1
 y ' my . y  0.x + my . y + 0.z + 0.1
  = = 
 z '  mz .z  0.x + 0. y + mz .z + 0.1
     
 1   1   0.x + 0. y + 0.z +1.1 

mx 0 0 0x 
0 my 0 0  
  y 
0 0 mz 0 z 
  
0 0 0 1 1 

Matriks transformasi dari scaling adalah:

mx 0 0 0
0 my 0 0
S=  
0 0 mz 0
 
0 0 0 1

Dengan implementasi dalam program sebagai berikut:

matriks scaling(float mx, float my, float mz) {

matriks scale = identitas();

scale.m[0][0] = mx;

scale.m[1][1] = my;

scale.m[2][2] = mz;

D. ROTASI TERHADAP SUMBU X

Rotasi adalah perpindahan objek dari titik P(x,y,z) ke titik


P’(x’,y’,z’) yang berupa pemindahan berputar sebesar sudut θ ,
yang dapat digambarkan sebagai berikut:

x’ = x

y’ = y cos ( θ ) - z sin ( θ )

z’ = y sin ( θ ) + z cos ( θ )

Operasi rotasi sumbu x dapat dituliskan sebagai berikut:

6|Page
x'  x   1.x + 0. y + 0.z + 0.1 
 y '  y. cos( θ ) − z. sin( θ )  0.x + y. cos( θ ) − z. sin( θ ) + 0.1
 =  = 
 z '   y. sin( θ ) + z. sin( θ )  0.x + y. sin( θ ) + z. cos( θ ) + 0.1
     
1   1   0.x + 0. y + 0.z +1.1 

1 0 0 0  x 
0 cos( θ ) − sin( θ ) 0  
  = y
0 sin( θ ) cos( θ ) 0  z 
   
0 0 0 1 1 

Maka matriks transformasi dari rotasi sumbu x adalah:

1 0 0 0
0 cos( θ) − sin( θ) 0
Rx =  
0 sin( θ) cos( θ) 0
 
0 0 0 1

Dengan implementasi dalam program sebagai berikut:

matriks rotasiX(float theta) {

matriks rotate = identitas();

float cs = cos(theta);

float sn = sin(theta);

rotate.m[1][1] = cs;

rotate.m[1][2] = -sn;

rotate.m[2][1] = sn;

7|Page
Gambar : Rotasi terhadap sumbu x

E. ROTASI TERHADAP SUMBU Y

Rotasi adalah perpindahan objek dari titik P(x,y,z) ke titik


P’(x’,y’,z’) yang berupa pemindahan berputar sebesar sudut θ ,
yang dapat digambarkan sebagai berikut:

x’ = x cos ( θ ) + z sin ( θ )

y’ = y

z’ = -x sin ( θ ) + z cos ( θ )

Operasi rotasi sumbu y dapat dituliskan sebagai berikut:

x'  x. cos( θ ) + z. sin( θ )   x. cos( θ ) + 0. y + z. sin( θ ) + 0.1 


 y '  y   0.x +1. y + 0.z + 0.1 
 = = 
 z '  − x. sin( θ ) + z. cos( θ ) − x. sin( θ ) + 0. y + z. cos( θ ) + 0.1
     
1   1   0.x + 0. y + 0.z +1.1 

 cos θ 0 sin( θ ) 0x 


 0 1 0 0  
  y 
− sin( θ ) 0 cos( θ ) 0 z 
  
 0 0 0 1 1 

8|Page
Maka matriks transformasi sumbu y adalah:

 cos θ 0 sin( θ) 0
 0 1 0 0
Rx =  
−sin( θ) 0 cos( θ) 0
 
 0 0 0 1

Dengan implementasi dalam program sebagai berikut:

matriks rotasiY(float theta) {

matriks rotate = identitas();

float cs = cos(theta);

float sn = sin(theta);

rotate.m[0][0] = cs;

rotate.m[0][2] = sn;

Gambar : Rotasi terhadap sumbu y

F. ROTASI TERHADAP SUMBU Z

9|Page
Rotasi adalah perpindahan objek dari titik P(x,y,z) ke titik
P’(x’,y’,z’) yang berupa pemindahan berputar sebesar sudut θ ,
yang dapat digambarkan sebagai berikut:

x’ = x cos ( θ ) – y sin( θ )

y’ = x sin( θ ) + y cos( θ )

z’ = z

Operasi rotasi sumbu z dapat dituliskan sebagai berikut:

 x' x. cos( θ ) − y. sin( θ)  x. cos( θ) + y. sin( θ) + 0.z + 0.1


 y ' x. sin( θ) + y. cos( θ) x. sin( θ) + y. cos( θ) + 0.z + 0.1
 = = 
z'  z   0.x + 0. y +1.z + 0.1 
     
1   1   0.x + 0. y + 0.z +1.1 

 cos θ − sin( θ) 0 0x 


sin( θ) cos( θ) 0 0 
  y 
 0 0 1 0 z 
  
 0 0 0 11 

Maka matriks transformasi sumbu z adalah:

 cos θ −sin( θ) 0 0
sin( θ) cos( θ) 0 0
Rx =  
 0 0 1 0
 
 0 0 0 1

Dengan implementasi dalam program sebagai berikut:

matriks rotasiZ(float theta) {

matriks rotate = identitas();

float cs = cos(theta);

float sn = sin(theta);

rotate.m[0][0] = cs;

rotate.m[0][1] = -sn;

10 | P a g e
Gambar : Rotasi terhadap sumbu z

Gambar : Rotasi terhadap sumbu x, y, dan z

G. PERKALIAN MATRIKS

Dalam transformasi posisi, selain menyediakan fungsi-


fungsi untuk transformasi juga diperlukan beberapa pengolahan
matriks, seperti penjumlahan matriks dan perkalian matriks.
Perkalian matriks merupakan hal yang penting saat melakukan
transformasi. Kami akan membahas 2 jenis perkalian matriks,
yaitu:

a. Perkalian Matriks dengan Matriks


Perkalian matriks ini digunakan untuk operasi
transformasi dari objek 3D dan untuk menggabungkan
transformasi. Perkalian matrik a dan matriks b akan
menghasilkan matriks c yang dirumuskan dengan:

11 | P a g e
3
Cij = ∑ aik bkj
k =0

Dimana i dan j bernilai 0 s/d 3.

Implementasi perkalian matriks dengan matriks:

matriks kalim (matriks a, matriks b) {

int i,j,k;

matriks c;

for (i=0;i<4;i++) {

for (j=0;j<4;j++) {

c.m[i][j] = 0;

for (k=0;k<4;k++) {

c.m[i][j]+=a.m[i][k] * b.m[k][j];

b. Perkalian Matriks dengan Vektor


Perkalian matriks ini digunakan untuk operasi
transformasi dari objek 3D guna menghasilkan vektor baru
dari titik objek yang ditransformasika. Perkalian matriks
vektor a dan vektor b akan menghasilkan vektor c yang
dirumuskan dengan:

3
Ci = ∑a ik bk
k =0

Dimana i bernilai 0 s/d 3.

Implementasi perkalian matriks dengan vektor:


vektor kali (matriks mat, vektor b) {

int i,j;

vektor c;

for (i=0;i<4;i++) {

c.v[i] = 0;

for (j=0;j<4;j++) { 12 | P a g e

c.v[i]+= mat.m[i][j] *
b.v[j];
PENUTUP

o Objek 3 dimensi adalah model struktur data yang menyatakan


suatu gambar 3 dimensi dibentuk dan disusun, yang terdiri atas
sekumpulan titik 3 dimensi (x, y, dan z) yang membentuk luasan-
luasan (face) yang digabungkan menjadi satu kesatuan.
o Berbeda dengan sistem koordinat 2 dimensi, pada sistem
koordinat 3 dimensi digunakan tiga buah nilai, yakni x, y, dan z.
dimana z menyatakan kedalaman dari objek yang dibentuk.
o Sistem koordinat 3 dimensi sering disebut sebagai sistem
koordinat ruang.
o Titik 3 dimensi merupakan elemen dasar dalam menggambar atau
membentuk sebuah objek 3 dimensi yang mempunyai tiga nilai
P(x,y,z).
o Transformasi titik dan objek 3 dimensi terdiri dari translasi, scaling,
dan rotasi.
o Translasi adalah perpindahan objek dari titik P(x,y) ketitik P’(x’,y’)
secara linier. Dalam translasi 3D diperlukan tiga parameter yaitu
pemindahan ke arah sumbu x, pemindahan ke arah sumbu y, dan
pemindahan ke arah sumbu z.
o Scaling adalah perpindahan objek dari titik P ke titik P’ dimana
jarak titik P’ adalah m kali titik P.

13 | P a g e
o Rotasi adalah perpindahan objek dari titik P(x,y,z) ke titik
P’(x’,y’,z’) yang berupa pemindahan berputar sebesar sudut θ .

o Rotasi dalam hal ini ada 3 macam yaitu rotasi terhadap sumbu x,

rotasi terhadap sumbu y, dan rotasi terhadap sumbu z.

o Dalam melakukan proses transformasi, diperlukan proses perkalian

antara matriks dengan matriks atau matriks dengan vektor untuk

menentukan posisi (x, y, dan z) yang baru (setelah mengalami

proses transformasi).
o Implementasi penggambaran objek 3 dimensi dapat dilakukan
dengan menggunakan bahasa pemograman Visual C++ dengan
memakai library openGL.

14 | P a g e
DAFTAR PUSTAKA

Basuki, A dan Nana Ramadijanti. 2006. Grafika Komputer Teori dan


Implementasi. Yogyakarta: Penerbit Andi

Vince, John. 2006. Mathematics for Computer Graphics, Second Edition.


London: Springer-Verlag

http://www.nehe.gamedev.net. 7 April 2009. OpenGL Tutorial and Lessons

http://www.scribd.com. 8 April 2009. OpenGL Programming Guide

15 | P a g e

You might also like