Tadi sudah saya posting bagaimana cara membuat objekmemantul dan untuk postingan ke dua hari ini akan membahas tentang
fungsi-fungsi dari transformasi yaitu rotasi, sekala dan translasi, sebagai
contohnya saya menggunakan angka yang sama seperti pada postingan sebelumnya
yaitu “013”, ok untuk lebih jelasnya simaklah hasil running programnya dibawah
ini :
rotasi
sekala
traslasi
bagaimana mulai tertarik
dibawah adalah kode dengan kunci tombol dimana saat di tekan tombol tertentu objek akan melakukan aksi yang berbeda beda :
untuk tobolnya saya disini menggunakan sebagai berikut :
rotasi : q dan e
skala : 1 dan 2
translasi : w,s,a dan d
langsung saja ini adalah kode dan penjelasannya :
|
#include <windows.h>
#include <gl\gl.h>
#include <gl\glut.h>
void npm(void){
//lubang nol
glBegin(GL_LINE_LOOP);
glColor3f(1,1,0);
glVertex2f(-0.55,
0.3);
glVertex2f(-0.55,
-0.2);
glVertex2f(-0.65,
-0.2);
glVertex2f(-0.65,
0.3);
glEnd();
//NOL
glBegin(GL_LINE_LOOP);
glColor3f(1,1,0);
glVertex2f(-0.5,
0.5);
glVertex2f(-0.4,
0.4);
glVertex2f(-0.4,
-0.3);
glVertex2f(-0.5,
-0.4);
glVertex2f(-0.7,
-0.4);
glVertex2f(-0.8,
-0.3);
glVertex2f(-0.8,
0.4);
glVertex2f(-0.7,
0.5);
glEnd();
//satu
glBegin(GL_LINE_LOOP);
glColor3f(0,1,0);
glVertex2f(0.2,
0.5);
glVertex2f(0.2,
-0.3);
glVertex2f(0.3,
-0.3);
glVertex2f(0.3,
-0.4);
glVertex2f(0.0,
-0.4);
glVertex2f(0.0,
-0.3);
glVertex2f(0.1,
-0.3);
glVertex2f(0.1,
0.4);
glVertex2f(0.0,
0.4);
glVertex2f(0.1,
0.5);
glEnd();
//tiga
glBegin(GL_LINE_LOOP);
glColor3f(0,0,1);
glVertex2f(0.4,
0.5);
glVertex2f(0.8,
0.5);
glVertex2f(0.8,
-0.4);
glVertex2f(0.4,
-0.4);
glVertex2f(0.4,
-0.3);
glVertex2f(0.7,
-0.3);
glVertex2f(0.7,
0.0);
glVertex2f(0.4,
0.0);
glVertex2f(0.4,
0.1);
glVertex2f(0.7,
0.1);
glVertex2f(0.7,
0.4);
glVertex2f(0.4,
0.4);
glEnd();
glutSwapBuffers();
}
void tombol(unsigned
char kunci, int
x, int y)
{
//huruf-huruf di
keyboard yang mengendalikan grafik
switch (kunci)
{
case 'q':
glRotatef(2.0, 2.0, 0.0, 0.0); // objek akan merotasi kedepan
break;
case 'e':
glRotatef(-2.0, 2.0, 0.0, 0.0); //objek akan merotasi kebelakang
break;
case '1':
glScaled(0.2, 0.2, 0.0); //objek akan mengecil
case '2':
glScaled(2.0, 2.0, 0.0); //objek akan membesar
break;
case 'a':
glTranslatef( -0.2f, 0.0f, 0.0f
); //objek akan bergeser ke kiri
break;
case 'd':
glTranslatef( 0.2f, 0.0f, 0.0f
); //objek akan bergeser ke kanan
break;
case 'w':
glTranslatef( 0.0f, 0.1f, 0.0f
); //objek akan bergeser ke atas
break;
case 's':
glTranslatef( 0.0f, -0.1f, 0.0f
); ////objek akan bergeser ke bawah
}
glClear(GL_COLOR_BUFFER_BIT);
npm(); /*
repaint the window */
}
int main (int
argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE
| GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(150,
100);
glutCreateWindow("npm");
glutDisplayFunc(npm);
glutKeyboardFunc(tombol);
glutMainLoop();
return 0;
}
|
ok sekian dulu untuk postingan kali ini,
semoga bermanfaat.....



0 komentar:
Posting Komentar