Ti-2-kelompok-2

  • 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-2-kelompok-2 as PDF for free.

More details

  • Words: 702
  • Pages: 24
Transformasi 2D Kelompok II : Jackson (52007033) Johan Liemena (52007036) Pieter Wonggianto (520070xx) Taufik Rahmanto (520070xx)

Transformasi 2D •

Transformasi 2 dimensi adalah suatu model atau bentuk atau teknik memindahkan atau mengubah nilai posisi objek dalam sistem koordinat 2 dimensi. Pemindahan objek ini dapat diartikan sebagai pemindahan titik. Untuk dapat melakukan pemindahan maka digunakan 2 variabel dasar dalam matematika yaitu vektor dan matriks. Vektor menunjukkan titik atau objek yang dinyataka dalam vektor posisi v=(vx,vy,vz). Sedangkan matriks adalah sebuah operator yang akan memindahkan objek. Dari matriks inilah bermacam-macam transformasi dapat dibentuk. Dengan demikian dalam transformasi ini beberapa struktur harus dibuat terlebih dahulu sebelum diimplementasikan ke dalam program, yaitu:



– – –

Struktur data titik 2D, Struktur data vektor 2D, Struktur data matrix 2D.

Transformasi 2D •

Struktur data dari titik 2D dapat didefinisikan dengan: typedef struct{ float x,y; }point2D_t;

Transformasi 2D •

Struktur data dari vector 2D dapat didefinisikan dengan: typedef struct{ float v[3]; }vector2D_t;

Transformasi 2D •

Struktur data dari matrix 2D dapat didefinisikan dengan: typedef struct{ float m[3][3]; }matrix2D_t;

Transformasi 2D •

Prinsip kerja Transformasi 2D : • • • •

Mengubah struktur data titik ke struktur data vektor, Menghitung transformasi, Mengubah struktur data vektor ke struktur data titik, Menggambar objek.

Transformasi 2D •

Fungsi mengubah titik menjadi vector vector2D_t point2vector(point2D_t pnt) { vector2D_t vec; vec.v[0]=pnt.x; vec.v[1]=pnt.y; vec.v[2]=1.; return vec; }

Transformasi 2D •

Fungsi mengubah vector menjadi menjadi titik: point2D_t vector2point(vector2D_t vec) { point2D_t pnt; pnt.x=vec.v[0]; pnt.y=vec.v[1]; return pnt; }

Matriks Identitas •

Sebelum melakukan implementasi matriks pada transformasi 2D terlebih dahulu ditentukan matriks identitasnya. Matriks identitas adalah matriks yang nilai diagonal utamanya sama dengan satu dan yang lainnya nol.

Matriks Identitas • Matrix identitas 2D adalah: 1 0 0    I = 0 1 0  0 0 1

Matriks Identitas • Implementasi matrix identitas 2D adalah: matrix2D_t createIdentity(void) { matrix2D_t u; int i,j; for (i=0;i<3;i++) { for (j=0;j<3;j++) u.m[i][j]=0.; u.m[i][i]=1.; } return u; }

Translasi 2D •

Translasi adalah perpindahan objek dari titik P(x,y) ke titik P’(x’,y’) secara linier. Dalam translasi 2D diperlukan dua parameter, yaitu pemindahan ke arah smbu x dan pemindahan ke arah sumbu y. Translasi (dx,dy) didefinisikan dengan: • x’ = x+dx • y’ = y+dy

Translasi 2D • Matrix translasi 2D adalah: 1 0 d x    T = 0 1 d y  0 0 1 

Translasi 2D • Implementasi matrix translasi 2D adalah: matrix2D_t translation(float dx, float dy) { matrix2D_t trans=createIdentity(); trans.m[0][2]=dx; trans.m[1][2]=dy; return trans; }

Scaling 2D • Scaling m adalah perpindahan objek dari titik P ke titik P’, di mana jarak titik P’ adalah m kali titik P. • Proses scaling dapat didefinisikan dengan: • x’ = mx . x • y’ = my . y

Scaling 2D • Matrix scaling 2D adalah: m x  S=0  0

0 my 0

0  0 1

Scaling 2D •

Implementasi matriks transformasi untuk scaling adalah sebagai berikut: matrix2D_t scaling(float mx, float my) { matrix2D_t scale=createIdentity(); scale.m[0][0]=mx; scale.m[1][1]=my; return scale; }

Rotation 2D •



Rotasi adalah perpindahan objek dari titik P(x,y) ke titik P’(x’,y’) yang berupa pemindahan berputar sebesar sudut θ dengan sumbu rotasi pada titik (0,0). Dapat ditulis dengan: • x’ = x.cos(θ) – y.sin(θ) • y’ = x.sin(θ) + y.cos(θ)

Rotation 2D • Matrix rotasi 2D adalah: cos(θ ) − sin (θ ) 0   ( ) ( ) R =  sin θ cos θ 0  0 0 1

Rotation 2D •

Implementasi matriks transformasi untuk rotation adalah sebagai berikut: matrix2D_t rotation(float theta) { matrix2D_t rotate=createIdentity(); 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][1]=cs; return rotate; }

Perkalian Matrix •

Dalam perkalian matriks ini dikenal 2 jenis, yaitu: – Perkalian matrix dengan vector untuk menghasilkan vector dari titik hasil transformasi. – Perkalian matrix dengan matrix untuk menghasilkan matrix transformasi yang baru.

Perkalian Matrix Dengan Vector •

Implementasi perkalian matrix dengan vector: vector2D_t operator * (matrix2D_t a,vector2D_t b) { vector2D_t c; int i,k; for (i=0;i<3;i++) { c.v[i]=0; for(k=0;k<3;k++) c.v[i]+=a.m[i][k]*b.v[k]; } return c; }

Perkalian Matrix Dengan Matrix •

Implementasi perkalian matrix dengan matrix: matrix2D_t operator * (matrix2D_t a,matrix2D_t b) { matrix2D_t c; int i,j,k; for (i=0;i<3;i++) { for (j=0;j<3;j++){ c.m[i][j]=0; for (k=0;k<3;k++) c.m[i][j]+=a.m[i][k]*b.m[k][j]; } } return c; }

Thank You

More Documents from "Armin"