#include <GL/glut.h>
#include <math.h>
const float PI = 22.0 / 7;
float xroot = 0, yroot = 0;
void SetupRC() {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1, 1, 5000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(00, 00, 600,
0, 0, 0,
0, 1, 0);
}
void pyramids(int sign) {
glColor3f(1, 1, 1);
glBegin(GL_POLYGON);
glVertex3f(0, sign*100, 0);//1
glVertex3f(-50, 0, 50);//2
glVertex3f(50,0,50);//3
glEnd();
glColor3f(1, 0.5, 1);
glBegin(GL_POLYGON);
glVertex3f(0, sign*100, 0);//1
glVertex3f(-50, 0, -50);//4
glVertex3f(50, 0, -50);//5
glEnd();
glColor3f(0.5, 0.5, 1);
glBegin(GL_POLYGON);
glVertex3f(0, sign * 100, 0);//1
glVertex3f(50, 0, 50);//3
glVertex3f(50, 0, -50);//5
glEnd();
glColor3f(0.5, 0.5, 0.5);
glBegin(GL_POLYGON);
glVertex3f(0, sign * 100, 0);//1
glVertex3f(-50, 0, -50);//4
glVertex3f(-50, 0, 50);//2
glEnd();
}
void Render() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glPushMatrix();
// التحكم بالدوران
glRotatef(xroot, 1, 0, 0);
glRotatef(yroot, 0, 1, 0);
// استدعاء الدوال المطلوبة فقط
pyramids(+1);
pyramids(-1);
//pyramids_lowwer();
glPopMatrix();
glFlush();
}
void specialkey(int key, int x, int y) {
if (key == GLUT_KEY_UP) {
xroot -= 5;
}
if (key == GLUT_KEY_DOWN) {
xroot += 5;
}
if (key == GLUT_KEY_LEFT) {
yroot -= 5;
}
if (key == GLUT_KEY_RIGHT) {
yroot += 5;
}
glutPostRedisplay();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 800);
glutCreateWindow("Book & Cylinder");
SetupRC();
glutDisplayFunc(Render);
glutSpecialFunc(specialkey);
glutMainLoop();
}
Comments