Transformasi
• Translasi objek dipindah kelokasi baru tanpa mengubah bentuk ukuran
atau orientasinya.
• Skala objek diperbesar/diperkecil.
• Rotasi/Putar objek diputar terhadap titik tertentu tanpa mengubah
bentuk dan ukurannya.
contoh
skala
translasi
before
rotasi
after
Pengenalan
Konsep yang terpenting dalam grafika
komputer adalah Transformasi Affine.
Pada dasarnya, transformasi ini
adalah memindahkan objek tanpa
merusak bentuk.
Transformasi Affine
Transformasi Affine mempertahankan
garis dan bidang.
– Mempertahankan keliniearan dan
kedatarannya
Garis tetap sebagai garis
Bidang tetap datar
...
Transformasi Affine mempertahankan garis dan bidang.
– Jika 2 garis paralel dikenakan transformasi yang sama maka hasil setelah
transformasi tetap juga paralel.
– Demikian juga untuk bidang
glTranslated
Akan ditranslasikan bangunan persegi dengan glTranslated( x, y,
z) dan
warnanya diganti dengan warna biru
void myDisplay(void)
{
glColor3f (0.0, 1.0, 0.0);
glRectf (300.0, 200.0, 400.0, 300.0);
glColor3f (0.0, 0.0, 1.0);
glPushMatrix();
glTranslated(150,150,0);
glRectf (300.0, 200.0, 400.0, 300.0);
glPopMatrix();
glFlush ();
}
Coding :
void myDisplay(void) void main(int argc, char** argv)
#include <windows.h> { {
#include <glut.h> glColor3f (0.0, 1.0, 0.0); glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE |
void myInit(void) glRectf (300.0, 200.0, 400.0, 300.0); GLUT_RGB);
{ glutInitWindowSize(640,480);
glColor3f (0.0, 0.0, 1.0); glutInitWindowPosition(100, 150);
gluOrtho2D(0.0, 640.0, 0.0,
480.0); glPushMatrix(); glutCreateWindow("transformasi");
} glutDisplayFunc(myDisplay);
glTranslated(150,150,0); myInit();
glutMainLoop();
glRectf (300.0, 200.0, 400.0, 300.0); }
glPopMatrix();
glFlush ();
}
glRotate
Bangun persegi diputar glRotate(degrees, x, y, z); , warnanya diganti dengan
warna merah.
void myDisplay(void)
{
glColor3f (0.0, 0.0, 1.0);
glRectf (300.0, 200.0, 400.0, 300.0);
glColor3f (1.0, 0.0, 0.0);
glPushMatrix();
glRotatef(30.0f, 0.0f, 0.0f, 1.0f);
glRectf (300.0, 200.0, 400.0, 300.0);
glPopMatrix();
glFlush ();
}
Coding :
#include <windows.h> void myDisplay(void) void main(int argc, char** argv)
#include <glut.h> { {
glColor3f (0.0, 0.0, glutInit(&argc, argv);
void myInit(void) 1.0); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
{ glutInitWindowSize(640,480);
glRectf (300.0, 200.0, glutInitWindowPosition(100, 150);
gluOrtho2D(0.0, 640.0, 0.0, 400.0, 300.0);
480.0); glColor3f (1.0, 0.0, glutCreateWindow("transformasi");
} 0.0); glutDisplayFunc(myDisplay);
myInit();
glPushMatrix(); glutMainLoop();
}
glRotatef(30.0f, 0.0f,
0.0f, 1.0f);
glPopMatrix();
glFlush ();
}
glScaled
Atau diskala glScaled(x, y, z); dan warnanya diganti
dengan kuning.
void myDisplay(void)
{
glColor3f (0.0, 0.0, 1.0);
glRectf (300.0, 200.0, 400.0, 300.0);