#include <GL/freeglut.h> #include <math.h> float rotate_x = 0; float rotate_y = 0; float speed = 0.5; float scale_a = 1.2; float colors[][3] = { {0.0f, 1.0f, 1.0f}, // Κυανό {1.0f, 0.0f, 0.0f}, // Κόκκινο {0.0f, 1.0f, 0.0f}, // Πράσινο {1.0f, 0.5f, 0.0f}, // Πορτοκαλί {1.0f, 1.0f, 0.0f} // Ιριδίζοντας }; int currentColor = 0; void drawCube3d(float size) { float halfSize = size / 2.0f; GLfloat vertices[][3] = { // Εμφάνιση συντεταγμένων }; GLuint faces[][4] = { // Εμφάνιση επιφανειών }; // Εμφάνιση χρωμάτων // ... // Σχεδίαση κύβου με χρώματα // ... } void drawPyramid() { // Υλοποίηση σχεδίασης πυραμίδας // ... } void drawSphere() { // Υλοποίηση σχεδίασης σφαίρας // ... } void specialInput(int key, int x, int y) { switch(key) { // Περιστροφή σχήματος με τα βέλη // ... case GLUT_KEY_F1: // Εμφάνιση ορθογωνίου παραλληλεπίπεδου // ... break; case GLUT_KEY_F2: // Εμφάνιση πολυγώνου με έξι ακμές // ... break; case GLUT_KEY_F3: // Εμφάνιση κύκλου // ... break; case GLUT_KEY_F4: // Εμφάνιση κύβου drawCube3d(20); break; case GLUT_KEY_F5: // Εμφάνιση πυραμίδας drawPyramid(); break; case GLUT_KEY_F6: // Εμφάνιση σφαίρας drawSphere(); break; } glutPostRedisplay(); } void keyboard(unsigned char key, int x, int y) { switch(key) { case ' ': // Εναλλαγή περιστροφής // ... break; case '+': // Αύξηση μεγέθους // ... break; case '-': // Μείωση μεγέθους // ... break; case '1': // Αλλαγή σε κυανό χρώμα // ... break; case '2': // Αλλαγή σε κόκκινο χρώμα // ... break; case '3': // Αλλαγή σε πράσινο χρώμα // ... break; case '4': // Αλλαγή σε πορτοκαλί χρώμα // ... break; case '5': // Αλλαγή σε ιριδίζοντα χρώμα // ... break; } } void toggleRotation() { // Εναλλαγή περιστροφής // ... } void changeSize(int direction) { // Αλλαγή μεγέθους // ... } void changeColor(int color) { // Αλλαγή χρώματος // ... } void drawScene() { // Σχεδίαση σκηνής // ... } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(800, 800); glutInitWindowPosition(100, 100); glutCreateWindow("OpenGL Sample Application"); glEnable(GL_DEPTH_TEST); // Ορισμός λειτουργιών ελέγχου glutSpecialFunc(specialInput); glutKeyboardFunc(keyboard); glutDisplayFunc(drawScene); // Εκκίνηση του βρόχου γεγονότων GLUT glutMainLoop(); return 0; }