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)