TRANSFORMASI & Flipping Coin
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 : #include <windows.h> #include <gl/Gl.h> #include <gl/glut.h> void myInit(void) { gluOrtho2D(0.0, 640.0, 0.0, 480.0); } 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); glPopMatrix(); glFlush (); void main(int argc, char** argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(640,480); glutInitWindowPosition(100, 150); glutCreateWindow("transformasi"); glutDisplayFunc(myDisplay); myInit(); glutMainLoop();
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 "stdafx.h" #include <windows.h> #include <gl/Gl.h> #include <gl/glut.h> void myInit(void) { gluOrtho2D(0.0, 640.0, 0.0, 480.0); } 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); glPopMatrix(); glFlush (); void main(int argc, char** argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(640,480); glutInitWindowPosition(100, 150); glutCreateWindow("transformasi"); glutDisplayFunc(myDisplay); myInit(); glutMainLoop();
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); glColor3f (1.0, 1.0, 0.0); glPushMatrix(); glScalef(0.5f, 0.5f, 1.0f); glRectf (300.0, 200.0, 400.0, 300.0); glPopMatrix(); glFlush (); }
Coding : #include "stdafx.h" #include <windows.h> #include <gl/Gl.h> #include <gl/glut.h> void myInit(void) { gluOrtho2D(0.0, 640.0, 0.0, 480.0); } void myDisplay(void) glColor3f (0.0, 0.0, 1.0); glRectf (300.0, 200.0, 400.0, 300.0); glColor3f (1.0, 1.0, 0.0); glPushMatrix(); glScalef(0.5f, 0.5f, 1.0f); glPopMatrix(); glFlush (); void main(int argc, char** argv) glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(640,480); glutInitWindowPosition(100, 150); glutCreateWindow("transformasi"); glutDisplayFunc(myDisplay); myInit(); glutMainLoop();
Coding Flipping Coin : #include <stdlib.h> #include <math.h> #include <gl/glut.h> const double phi = 3.141592653589793; int A; float sudut = 0; void lingkaran(int jari2, int titik, int lebar, int tinggi) { glBegin(GL_POLYGON); for (A = 0; A <= 400; A++) { float sudut = A * (2 * phi / titik); float x = lebar + jari2 * cos(sudut); float y = tinggi + jari2 * sin(sudut); glVertex2f(x, y); } glEnd(); void shape() { glPushMatrix(); lingkaran(1, 320, 0, 0); glPopMatrix(); void myDisplay(void) { glClear(GL_COLOR_BUFFER_BIT); glClearColor(1.0, 1.0, 1.0, 1.0); glScalef(sudut*0.001, sudut*0.001, 1.0f); glTranslated(sudut / 500, 0.2, 0); glRotated(sudut * 100, 0, sudut, 0); glColor3f(sudut*0.003, 1 - sudut * -0.003, 1 - sudut * 0.001); shape(); glFlush(); void timer(int value) { sudut -= -0.06; glutPostRedisplay(); glutTimerFunc(1, timer, 0); void main(int argc, char**argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(640, 480); glutInitWindowPosition(100, 150); gluOrtho2D(-1000, 1000, -1000, 1000); glutCreateWindow("Tranformasi"); glutDisplayFunc(myDisplay); glutTimerFunc(100, timer, 0); glutMainLoop(); }s