TRANSFORMASI 3D dan MATRIKSNYA Billy Nicholas Deddy Yudhatama Elmy Samer Ferdy Chuandi Heryanto
Jenis-Jenis Transformasi 3D • • • • •
Translasi Scaling Rotasi Terhadap Sumbu X Rotasi Terhadap Sumbu Y Rotasi Terhadap Sumbu Z
Matriks Transformasi 3D Matriks transformasi adalah matriks yang membuat sebuah objek mengalami perubahan, baik berupa perubahan posisi maupun perubahan ukuran. Matriks 3D dinyatakan dalam ukuran 4x4, di mana kolom ke-4 digunakan untuk menyediakan tempat untuk proses translasi. a11 a A = 21 a31 a41
a12
a13
a22
a23
a32 a42
a33 a43
a14 a24 a34 a44
Operasi Transformasi Transformasi 3D dapat dilakukan dengan menggunakan perkalian antara matriks transformasi dan vektor posisi dari setiap titik pada objek. Hasil transformasi ini masih berupa vektor. Operasional ini dituliskan dengan : Vhasil = A . Vposisi
Matriks Identitas (untuk Transformasi 3D) • Implementasi fungsi untuk membuat matriks identitas : matriks identitas (void){ matriks u; int i, j; for (i=0; i<4; i++) { for (j=0; j<4; j++) { u.m[ i ][ j ]=0; u.m[ i ][ i ]=1; } } return u; }
Translasi (1) Translasi adalah perpindahan objek dari titik P(x,y,z) ke titik P’(x’,y’,z’) secara linier. Dalam translasi 3D diperlukan 3 parameter yaitu pemindahan ke arah sumbu x, sumbu y, dan sumbu z.
Translasi (2) P’(x’,y’)
dy P(x,y) dx
dz
x' x dx y ' = y + dy z ' z dz 1 0 A = 0 0
0 1 0 0
0 0 1 0
dx dy dz 1
Translasi (3) • Implementasi Pada Program 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; return trans; }
Scaling (1) Scaling adalah perpindahan objek dari titik P(x,y,z) ke titik P’(x’,y’,z’), di mana jarak titik P’ adalah m kali titik P.
Scaling (2) y
0 0 mx 0 0 my 0 0 A= 0 0 mz 0 0 0 0 1 my.y x mx.x mz.z z
Scaling (3) • Implementasi Pada Program 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; return scale; }
Rotasi Terhadap Sumbu x (1) Rotasi adalah perpindahan objek dari titik P(x,y,z) ke titik P’(x’,y’,z’) yang berupa pemindahan berputar terhadap sumbu x sebesar sudut Ө.
Rotasi Terhadap Sumbu x (2) y
P(x,y,z)
Ө x P’(x’,y’,z’) z
0 0 1 0 cos(θ ) − sin(θ ) A= 0 sin(θ ) cos(θ ) 0 0 0
0 0 0 1
Rotasi Terhadap Sumbu x (3) • Implementasi Pada Program 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; rotate.m[2][2] = cs; return rotate; }
Rotasi Terhadap Sumbu y (1) Rotasi terhadap sumbu y perpindahan objek dari titik P(x,y,z) ke titik P’(x’,y’,z’) yang berupa pemindahan berputar terhadap sumbu y sebesar sudut Ө.
Rotasi Terhadap Sumbu y (2) y
P(x,y,z)
P’(x’,y’,z’)
Ө x
z
cos θ 0 A= − sin(θ ) 0
0 sin(θ ) 1 0 0 cos(θ ) 0 0
0 0 0 1
Rotasi Terhadap Sumbu y (3) • Implementasi Pada Program 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; rotate.m[2][0] = -sn; rotate.m[2][2] = cs; return rotate; }
Rotasi Terhadap Sumbu z (1) Rotasi terhadap sumbu z adalah perpindahan objek dari titik P(x,y,z) ke titik P’(x’,y’,z’), yang berupa pemindahan berputar terhadap sumbu z sebesar sudut Ө.
Rotasi Terhadap Sumbu z (2) y
P’(x’,y’,z’)
x Ө
z
P(x,y,z)
cos θ − sin(θ ) sin(θ ) cos(θ ) A= 0 0 0 0
0 0 1 0
0 0 0 1
Rotasi Terhadap Sumbu z (3) • Implementasi Pada Program 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; rotate.m[1][0] = sn; rotate.m[1][2] = cs; return rotate; }
Thank You ありがとうございました 감사합니다 Спасибо ขอบคุณ 謝謝您 σε ευχαριστώ tänan धनयवाद Terima Kasih