Ti-1-kelompok-4

  • Uploaded by: Armin
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Ti-1-kelompok-4 as PDF for free.

More details

  • Words: 715
  • Pages: 21
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

More Documents from "Armin"