Kelompok 3 Transformasi 2D
= 1. MOKHAMAD IRWAN ALIFI (076403020009)
= 2. SLAMET WAHYU UTOMO (076403020005)
= 3. IRWANTO (070403020031)
= 4. M. NURIL ANWAR (070403020013)
= 5. M. RIDHO SANTOSO (070403020020)
= 6. MIEISA PALUPI (086403020002)
= 7. DWI SUGI P (076403020006)
= 8. ARIF ARDIASYAH (070403020016)
=============================================
Struktur Titik dan Vektor
typedef struct {
float x,y;
} point2D_t;
Sturktur Data dari vektor 2D
typedef struct {
float v[3];
} vector2D_t;
Point2Vector
vector2D_t point2vector(point2D_t pnt)
{
vector2D_t vec;
vec.v[0]=pnt.x;
vec.v[1]=pnt.y;
vec.v[2]=1.;
}
point2D_t vector2point(vector2D_t vec)
{
point2D_t pnt;
pnt.x=vec.v[0];
pnt.y=vec.v[1];
}
- Matrik transformasi adalah matrik yang membuat sebuah obyek mengalami perubahan baik berupa perubahan posisi, maupun perubahan ukuran.
- Matrik transformasi 2D dinyatakan dalam ukuran 3x3, dimana kolom ke-3 digunakan untuk menyediakan tempat untuk proses translasi.
Implementasi Matrik Tranformasi Untuk Translasi
matrix2D_t translationMTX(float dx,float dy)
{
matrix2D_t trans=createIdentity();
trans.m[0][2]=dx;
trans.m[1][2]=dy;
return trans;
}
Scaling
Scaling m adalah perpindahan obyek dari titik P ke titik P’, dimana jarak titik P’ adalah m kali titik P
Matrik Transformasi
dari Scaling 2D
Proses scaling dengan menggunakan definisi vektor2D dapat dituliskan dengan
Matrik Transformasi dari Scaling
Implementasi Matrik Tranformasi Untuk Scaling
matrix2D_t scalingMTX(float mx,float my)
{
matrix2D_t scale=createIdentity();
scale.m[0][0]=mx;
scale.m[1][1]=my;
return scale;
}
Rotasi
Rotasi adalah perpindahan obyek dari titik P ke titik P’, yang berupa pemindahan berputar sebesar sudut q
Matrik Transformasi dari Rotasi
Implementasi Matrik Tranformasi Untuk Rotasi
matrix2D_t rotationMTX(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 Matrik
- Perkalian matrik dengan matrik menghasilkan matrik
- Perkalian matrik dengan vektor menghasilkan vektor
Perkalian matrik ini digunakan untuk operasional transformasi dari obyek 2D dan untuk komposisi (menggabungkan) tranformasi
Perkalian Matrik dengan Matrik
Perkalian matrik a dan matrik b menghasilkan matrik c yang dirumuskan dengan
dimana i dan j bernilai 0 s/d 2
Implementasi Perkalian
Matrik dengan Matrik
matrix2D_t operator * (matrix2D_t a, matrix2D_t b)
{
matrix2D_t c;//c=a*b
int i,j,k;
for (i=0;i<3;i++) 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;
Perkalian matrik a dan vektor b menghasilkan vektor c yang dirumuskan dengan
dimana i bernilai 0 s/d 2
vector2D_t operator * (matrix2D_t a, vector2D_t b)
{
vector2D_t c;//c=a*b
int i,j;
for (i=0;i<3;i++)>
c.v[i]=0;
for (j=0;j<3;j++)>
c.v[i]+=a.m[i][j]*b.v[j];
}
return c;
}
Komposisi Transformasi
Komposisi transformasi adalah menggabungkan beberapa tranformasi, sehingga dapat menghasilkan bentuk transformasi yang lebih kompleks
Komposisi tranformasi dapat dilakukan dengan mengalikan matrik-matrik transformasi
Download Sample Program disini
Download Program source disini
Posting Komentar