Untitled
unknown
plain_text
a month ago
2.4 kB
2
Indexable
Never
#include <iostream> #include <GL/glew.h> #include <GL/freeglut.h> // Variabel untuk menyimpan posisi, sudut rotasi, dan skala float x_pos = 0.0f, y_pos = 0.0f; // Posisi objek (translasi) float angle = 0.0f; // Sudut rotasi float scale = 1.0f; // Faktor skala // Fungsi untuk menggambar persegi void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); // Terapkan translasi, rotasi, dan skala glTranslatef(x_pos, y_pos, 0.0f); // Translasi objek glRotatef(angle, 0.0f, 0.0f, 1.0f); // Rotasi objek glScalef(scale, scale, 1.0f); // Skala objek // Gambar persegi glBegin(GL_QUADS); glColor3f(0.0f, 1.0f, 0.0f); // Hijau glVertex2f(-0.1f, -0.1f); glVertex2f(0.1f, -0.1f); glVertex2f(0.1f, 0.1f); glVertex2f(-0.1f, 0.1f); glEnd(); glutSwapBuffers(); } // Fungsi untuk menangani input dari keyboard spesial (tombol panah) void specialInput(int key, int x, int y) { switch (key) { case GLUT_KEY_UP: y_pos += 0.1f; // Pindahkan objek ke atas break; case GLUT_KEY_DOWN: y_pos -= 0.1f; // Pindahkan objek ke bawah break; case GLUT_KEY_LEFT: x_pos -= 0.1f; // Pindahkan objek ke kiri break; case GLUT_KEY_RIGHT: x_pos += 0.1f; // Pindahkan objek ke kanan break; } glutPostRedisplay(); } // Fungsi untuk menangani input dari keyboard biasa (rotasi dan skala) void keyboard(unsigned char key, int x, int y) { switch (key) { case 'r': // Rotasi ke kanan angle += 5.0f; break; case 'R': // Rotasi ke kiri angle -= 5.0f; break; case 's': // Perbesar skala scale += 0.1f; break; case 'S': // Perkecil skala scale -= 0.1f; break; } glutPostRedisplay(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); glutInitWindowSize(500, 500); glutCreateWindow("Translation, Rotation, Scaling"); glutDisplayFunc(render); glutSpecialFunc(specialInput); // Input keyboard khusus (tombol panah) glutKeyboardFunc(keyboard); // Input keyboard biasa (rotasi dan skala) glewInit(); glutMainLoop(); return 0; }
Leave a Comment