Also Like

📁 last Posts

رسم الهرم OpenGL


#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