Untitled
unknown
plain_text
a year ago
2.4 kB
8
Indexable
#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;
}
Editor is loading...
Leave a Comment