BAB VII TRANSFORMASI OBJEK (TRANSFORMASI AFFINE 2D DAN 3D) Pengertian Dasar Transformasi (1)

Download Report

Transcript BAB VII TRANSFORMASI OBJEK (TRANSFORMASI AFFINE 2D DAN 3D) Pengertian Dasar Transformasi (1)

BAB VII
TRANSFORMASI OBJEK
(TRANSFORMASI AFFINE 2D DAN 3D)
Pengertian Dasar Transformasi (1)
Pengertian Dasar Transformasi (2)


Gambar 1 menunjukkan gambar
rumah 2D sebelum dan sesudah
transformasi
Gambar 2 menunjukkan gambar
rumah 3D sebelum dan sesudah
transformasi.
Transformasi Affine 2D (1)


Untuk transformasi, koordinat titik P dan
Q dalam 2D dinyatakan sebagai :
 Px 
 Qx 
 
 
P   Py 
Q  Qy 
dan
1
1
 
 
Hal ini berarti titik P berada pada lokasi
P = Px i + Py j + , dimana  titik pusat
koordinat (tidak harus selalu (0,0)).
Transformasi Affine 2D (2)

Transformasi dari titik P menuju titik
Q menggunakan fungsi T() berikut
ini.
 Qx 
 Px 
 
 
 Q y   T  Py 
 1 
1
 
 
atau ringkasnya Q = T(P)
Transformasi Affine 2D (3)

Transformasi Affine mempunyai bentuk
seperti berikut ini.
 Q x   m11 Px  m12 Py  m13 
  

 Q y    m21 Px  m22 Py  m23 
 1  

1
  

dalam bentuk persamaan matriks
persamaan di atas dapat diubah menjadi
 Q x   m11 m12 m13  Px 
  
 
 Q y    m 21 m 22 m 23  Py 
 1  0
 1 
0
1
  
 
Transformasi Affine 2D (4)
Contoh :
 Lakukan transformasi Affine dari
titik P = (1,2) ke Q dengan matriks
transformasi  3 0 5 


  2 1 2
 0 0 1



Jawab :  Q x   3
  
 Qy    - 2
 1  0
  
0
1
0
5  1   8 
   
2  2    2 
1  1   1 
Transformasi Affine 2D (5)

Transformasi Affine berpengaruh
pada 4 transformasi dasar, yaitu:




translasi
skala
rotasi
shear
Transformasi Affine 2D (6)
Transformasi Affine 2D untuk Translasi
 Qx   1 0 m13  Px 
  
 
 Qy    0 1 m23  Py 
 1   0 0 1  1 
  
 
atau
Matriks untuk translasi:
 1 0 m13 


 0 1 m23 
0 0 1 


 Q x   Px  m13 
  

 Q y    Py  m 23 
 1  

1
  

Transformasi Affine 2D untuk Skala
( Qx, Qy ) = ( Sx Px , Sy Py )
Matriks untuk skala:
Sx

0
0

0
Sy
0
0

0
1 
Transformasi Affine 2D untuk Rotasi
Qx = Px cos() – Py sin()
Qy = Px sin() – Py cos()
Matriks untuk rotasi:
 cos( )  sin( ) 0 


 sin( ) cos( ) 0 
 0

0
1


Transformasi Affine 2D untuk Shear
Qx = Px + hPy
Qy = Py
Matriks untuk shear:
1 h 0


0 1 0
0 0 1


Transformasi Affine 3D

Transformasinya:
 Qx 
 Px 
 
 
 Qy 
 Py 
Q   M  P 
 z
 z
 1 
1
 
 
 m11

 m21
dengan M  
m31

 0

m12
m22
m32
0
m13
m23
m33
0
m14 

m24 
m34 

1 
Transformasi Affine 3D untuk Translasi

Matriks transformasinya:
1

0
0

0

0
1
0
0
0 m14 

0 m24 
1 m34 

0 1 
Transformasi Affine 3D untuk Skala

Matriks transformasinya:
Sx

0
0

0

0
Sy
0
0
0
0
Sz
0
0

0
0

1 
Transformasi Affine 3D untuk Rotasi

Rotasi terhadap sb. x
1

0
0

0

0 0
c c
s c
0 0
0

0
0

1 

Rotasi terhadap sb. y
 c

 0
 s

 0

0
1
0
0
s
0
c
0
0

0
0

1 

Rotasi terhadap sb. z
c  s

s c
0 0

0 0

0
0
1
0
0

0
0

1 
Transformasi Affine 3D untuk Shear

Matriks transformasinya:
1

f
0

0

0
1
0
0
0
0
1
0
0

0
0

1 
Transformasi Affine 3D dalam OpenGL

Penggambaran titik 3D ke dalam
window adalah memproyeksikan
titik (x1, y1, z1) menjadi (x1, y2, 0).
Pipelining

Yaitu proses penampilan gambar
sampai ke view port.
Fungsi untuk Pipeline pada OpenGL



Untuk mengatur transformasi model
view
Untuk mengatur kamera dengan
proyeksi paralel
Untuk mengatur posisi kamera
Fungsi untuk Mengatur Transformasi
Modelview


glMatrixMode(GL_MODELVIEW)
glScaled(sx, sy, sz)
Matrik dari obyek dikalikan masing-masing untuk
penskalaan x dengan sx, y dengan sy, dan z dengan
sz. Hasilnya dikembalikan lagi ke matrik obyek.

glTranslated(dx, dy, dz)
Matrik dari obyek dikalikan masing-masing untuk
translasi x dengan dx, y dengan dy, dan z dengan
dz. Hasilnya dikembalikan lagi ke matrik obyek.

glRotated(angle, ux, uy, uz)
Matrik dari obyek dikalikan masing-masing untuk
rotasi sebesar sudut angle dan berputar
mengelilingi sumbu antara titik pusat dengan titik
(ux, uy, uz).
Fungsi untuk Mengatur Kamera
dengan Proyeksi Paralel

glOrtho(left, right, bott, top, near, far)
Digunakan untuk membangun ruang pandang
yang berupa balok berongga yang sejajar dengan
sumbu x sepanjang left sampai right, sejajar
sumbu y sepanjang bott sampai top, dan sejajar
dengan sumbu z sepanjang -near sampai -far.
Digunakan tanda negatif karena defaultnya
kamera terletak pada titik pusat dan melihat ke
bawah sumbu negatif z. Untuk near bernilai 2,
artinya meletakkan bidang dekat pada z=-2 atau
2 unit di depan mata. Demikian juga untuk far,
misalnya far = 20, artinya meletakkan bidang
jauh 20 unit di depan mata.
Fungsi untuk Mengatur Posisi Kamera

gluLookAt( eye.x, eye.y, eye.z,
look.x, look.y, look.z, up.x, up.y,
up.z);
Bentuk Dasar untuk Objek 3D dalam
Bentuk Wireframe dalam OpenGL




Kubus : glutWireCube(GLdouble size);
menampilkan kubus dengan panjang sisi
masing-masing sepanjang size.
Donat : glutWireSphare(Gldouble
radius, Glint nSlices, Glint nStacks)
Kerucut : glutWireTorus(Gldouble
inRad, Gldouble outRad, Glint nSlices,
Glint nStacks)
Tempat teh : glutWireTeapot(Gldouble
size)