BAB VII
description
Transcript of BAB VII
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 :
dan
Hal ini berarti titik P berada pada lokasi P = Px i + Py j + , dimana titik pusat koordinat (tidak harus selalu (0,0)).
1y
x
P
P
P
1y
x
Q
Q
Q
Transformasi Affine 2D (2)
Transformasi dari titik P menuju titik Q menggunakan fungsi T() berikut ini.
atau ringkasnya Q = T(P)
11y
x
y
x
P
P
TQ
Q
Transformasi Affine 2D (3)
Transformasi Affine mempunyai bentuk seperti berikut ini.
dalam bentuk persamaan matriks persamaan di atas dapat diubah menjadi
11232221
131211
mPmPm
mPmPm
Q
Q
yx
yx
y
x
11 0 0
1232221
131211
y
x
y
x
P
P
mmm
mmm
Q
Q
Transformasi Affine 2D (4)
Contoh : Lakukan transformasi Affine dari
titik P = (1,2) ke Q dengan matriks transformasi
Jawab :
100
212
503
1
2
8
1
2
1
1 0 0
2 1 2-
5 0 3
1y
x
Q
Q
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
atau
Matriks untuk translasi:
1100
10
01
123
13
y
x
y
x
P
P
m
m
Q
Q
1
m P
m
123y
13x
y
x P
Q
Q
100
10
01
23
13
m
m
Transformasi Affine 2D untuk Skala
( Qx, Qy ) = ( Sx Px , Sy Py )
Matriks untuk skala:
100
00
00
y
x
S
S
Transformasi Affine 2D untuk Rotasi
Qx = Px cos() – Py sin()Qy = Px sin() – Py cos()
Matriks untuk rotasi:
100
0)cos()sin(
0)sin()cos(
Transformasi Affine 2D untuk Shear
Qx = Px + hPyQy = Py
Matriks untuk shear:
100
010
01 h
Transformasi Affine 3D
Transformasinya:
dengan
11z
y
x
z
y
x
P
P
P
MQ
Q
Q
100034333231
24232221
14131211
mmmm
mmmm
mmmm
M
Transformasi Affine 3D untuk Translasi
Matriks transformasinya:
1000
100
010
001
34
24
14
m
m
m
Transformasi Affine 3D untuk Skala
Matriks transformasinya:
1000
000
000
000
z
y
x
S
S
S
Transformasi Affine 3D untuk Rotasi
Rotasi terhadap sb. x
Rotasi terhadap sb. y
Rotasi terhadap sb. z
1000
00
00
0001
cs
cc
1000
00
0010
00
cs
sc
1000
0100
00
00
cs
sc
Transformasi Affine 3D untuk Shear
Matriks transformasinya:
1000
0100
001
0001
f
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)