You are on page 1of 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 0 0

S=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

You might also like