FaisalAhemdBijoy

Classroom 56

Apr 18th, 2021
717
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<GL/gl.h>
  2. #include <GL/glu.h>
  3. #include <GL/glut.h>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <windows.h>
  7. #include<math.h>
  8. #include<iostream>
  9. using namespace std;
  10.  
  11. double Txval=0,Tyval=0,Tzval=0;
  12. double windowHeight=500, windowWidth=500;
  13. GLfloat alpha = 0.0, theta = 0.0, axis_x=0.0, axis_y=0.0 , f_spin=0.0;
  14. GLboolean bRotate = false, uRotate = false;
  15.  
  16. bool flagRot = false;
  17.  
  18.  
  19. static GLfloat v_cube[8][3] =
  20. {
  21.     {0,0,0},
  22.     {0,0,1},
  23.     {0,1,0},
  24.     {0,1,1},
  25.     {1,0,0},
  26.     {1,0,1},
  27.     {1,1,0},
  28.     {1,1,1}
  29. };
  30.  
  31. static GLubyte quadIndices[6][4] =
  32. {
  33.     {3, 1, 5, 7},
  34.     {2, 0, 4, 6},
  35.     {2, 0, 1, 3},
  36.     {6, 4, 5, 7},
  37.     {2, 3, 7, 6},
  38.     {0, 1, 5, 4}
  39. };
  40.  
  41. void cube(float cr = 0.5, float cg = 0.5, float cb = 0.5)
  42. {
  43.     glBegin(GL_QUADS);
  44.     for(GLint i = 0; i<6; i++)
  45.     {
  46.         glColor3f(cr,cg,cb);
  47.         //cr+=0.6;
  48.         //cg+=0.4;
  49.         //cb+=0.2;
  50.  
  51.         for(GLint j=0; j<4; j++)
  52.         {
  53.             glVertex3fv(&v_cube[quadIndices[i][j]][0]);
  54.         }
  55.     }
  56.     glEnd();
  57. }
  58.  
  59. void axes()
  60. {
  61.     float length = 10;
  62.     float width = 0.3;
  63.  
  64.     // X-axis
  65.     glPushMatrix();
  66.     glTranslatef(length/2,0,0);
  67.     glScalef(length,width,width);
  68.     glTranslatef(-0.5,-0.5,-0.5);
  69.     cube(0.8,0.1,0.1);
  70.     glPopMatrix();
  71.  
  72.     // Y-axis
  73.     glPushMatrix();
  74.     glTranslatef(0,length/2,0);
  75.     glScalef(width,length,width);
  76.     glTranslatef(-0.5,-0.5,-0.5);
  77.     cube(0.1,0.8,0.1);
  78.     glPopMatrix();
  79.  
  80.     // Z-axis
  81.     glPushMatrix();
  82.     glTranslatef(0,0,length/2);
  83.     glScalef(width,width,length);
  84.     glTranslatef(-0.5,-0.5,-0.5);
  85.     cube(0.1,0.1,0.8);
  86.     glPopMatrix();
  87. }
  88.  
  89. void wall()
  90. {
  91.     float length = 45;
  92.     float width = 1;
  93.     //floor
  94.     glPushMatrix();
  95.     glScalef(length,width,length);
  96.     glTranslatef(-0.5,-1,-0.5);
  97.     cube(0.9,0.9,0.9);
  98.     glPopMatrix();
  99.     //left
  100.     glPushMatrix();
  101.     glTranslatef(length/2,-width,0);
  102.     glScalef(width,length,length);
  103.     glTranslatef(0,0,-0.5);
  104.     cube(03,0.7,0.7);
  105.     glPopMatrix();
  106.     //right
  107.     glPushMatrix();
  108.     glTranslatef(-length/2-1,-width,0);
  109.     glScalef(width,length,length);
  110.     glTranslatef(0,0,-0.5);
  111.     cube(03,0.7,0.7);
  112.     glPopMatrix();
  113.     //front
  114.     glPushMatrix();
  115.     glTranslatef(0,-width,length/2);
  116.     glScalef(length,length,width);
  117.     glTranslatef(-0.5,0,0);
  118.     cube(1,1,0.8);
  119.     glPopMatrix();
  120.     //black board
  121.     glPushMatrix();
  122.     glTranslatef(0,length/3,length/2-1);
  123.     glScalef(length/2,length/3,width);
  124.     glTranslatef(-0.5,0,0);
  125.     cube(0.1,0.1,0.1);
  126.     glPopMatrix();
  127.     //top
  128.     glPushMatrix();
  129.     glTranslatef(0,length,0);
  130.     glScalef(length,width,length);
  131.     glTranslatef(-0.5,-1,-0.5);
  132.     cube(1,1,1);
  133.     glPopMatrix();
  134. }
  135.  
  136. void fan()
  137. {
  138.     float height = 43;
  139.  
  140.     float m_width = 4;
  141.     float m_height = 2;
  142.     float angle = 0;
  143.  
  144.     float s_width = 2.0;
  145.     float s_height = 20.0;
  146.  
  147.     glPushMatrix();
  148.     glTranslatef(0,0,10);
  149.     for(int i=0; i<=360 ; i=i+10)
  150.     {
  151.  
  152.         glPushMatrix();
  153.         glTranslatef(0,height,0);
  154.         glRotatef(i,0,1,0);
  155.         glScalef(m_width,m_height/8,m_height);
  156.         glTranslatef(-0.5,0,-0.5);
  157.         cube(0.753, 0.753, 0.753);
  158.         glPopMatrix();
  159.  
  160.     }
  161.  
  162.     glPushMatrix();
  163.     glTranslatef(0,height-m_width-m_height/8,0);
  164.     glScalef(1,m_width,1);
  165.     glTranslatef(-0.5,0,-0.5);
  166.     cube(1,0,0);
  167.     glPopMatrix();
  168.  
  169.     glPushMatrix();
  170.     glRotatef(f_spin,0,1,0);
  171.     for(int i=0; i<=360 ; i=i+10)
  172.     {
  173.  
  174.         glPushMatrix();
  175.         glTranslatef(0,height-m_width-m_height/8-m_height,0);
  176.         glRotatef(i,0,1,0);
  177.         glScalef(m_width,m_height,m_height);
  178.         glTranslatef(-0.5,0,-0.5);
  179.         cube(0.863, 0.078, 0.235);
  180.         glPopMatrix();
  181.  
  182.     }
  183.  
  184.     glPushMatrix();
  185.     glTranslatef(0,height-m_width-m_height/8-m_height+1,0);
  186.     glScalef(s_height,0.5,s_width);
  187.     glTranslatef(-0.5,0,-0.5);
  188.     cube(0.000, 0.749, 1.000);
  189.     glPopMatrix();
  190.  
  191.     glPushMatrix();
  192.     glTranslatef(0,height-m_width-m_height/8-m_height+1,0);
  193.     glScalef(s_width,0.5,s_height);
  194.     glTranslatef(-0.5,0,-0.5);
  195.     cube(0.000, 0.749, 1.000);
  196.     glPopMatrix();
  197.  
  198.     glPopMatrix();
  199.  
  200.     glPopMatrix();
  201. }
  202.  
  203. void chair()
  204. {
  205.     float height=5;
  206.     float width=6;
  207.     float length=3.5;
  208.  
  209.     float base_height=0.5;
  210.     float leg_height=height-base_height;
  211.     float leg_width=0.7;
  212.  
  213.  
  214.     glPushMatrix();
  215.     glTranslatef(0,leg_height,0);
  216.  
  217.     glPushMatrix();
  218.     glScalef(width,base_height,length);
  219.     glTranslatef(-0.5,0,-0.5);
  220.     cube(0.53,0.39,0.28);
  221.     glPopMatrix();
  222.  
  223.     //legs
  224.     glPushMatrix();
  225.     glTranslatef(width/2-leg_width/2,0,length/2-leg_width/2);
  226.     glScalef(leg_width,leg_height,leg_width);
  227.     glTranslatef(-0.5,-1,-0.5);
  228.     cube(1,0.8,0);
  229.     glPopMatrix();
  230.  
  231.     glPushMatrix();
  232.     glTranslatef(width/2-leg_width/2,0,-(length/2-leg_width/2));
  233.     glScalef(leg_width,leg_height,leg_width);
  234.     glTranslatef(-0.5,-1,-0.5);
  235.     cube(1,0.8,0);
  236.     glPopMatrix();
  237.  
  238.     glPushMatrix();
  239.     glTranslatef(-(width/2-leg_width/2),0,-(length/2-leg_width/2));
  240.     glScalef(leg_width,leg_height,leg_width);
  241.     glTranslatef(-0.5,-1,-0.5);
  242.     cube(1,0.8,0);
  243.     glPopMatrix();
  244.  
  245.     glPushMatrix();
  246.     glTranslatef(-(width/2-leg_width/2),0,(length/2-leg_width/2));
  247.     glScalef(leg_width,leg_height,leg_width);
  248.     glTranslatef(-0.5,-1,-0.5);
  249.     cube(1,0.8,0);
  250.     glPopMatrix();
  251.  
  252.     //chair
  253.     glPushMatrix();
  254.     glTranslatef(0,-leg_height/2,-length);
  255.     glScalef(width/2,base_height,length/2);
  256.     glTranslatef(-0.5,0,-0.5);
  257.     cube(1.0,0,0);
  258.     glPopMatrix();
  259.     //legs
  260.     glPushMatrix();
  261.     glTranslatef(width/4-leg_width/4,-leg_height/2,-length+(length/4-leg_width/4));
  262.     glScalef(leg_width/2,leg_height/2,leg_width/2);
  263.     glTranslatef(-0.5,-1,-0.5);
  264.     cube(1,0.8,0);
  265.     glPopMatrix();
  266.  
  267.     glPushMatrix();
  268.     glTranslatef(width/4-leg_width/4,-leg_height/2,-length-(length/4-leg_width/4));
  269.     glScalef(leg_width/2,leg_height/2,leg_width/2);
  270.     glTranslatef(-0.5,-1,-0.5);
  271.     cube(1,0.8,0);
  272.     glPopMatrix();
  273.  
  274.     glPushMatrix();
  275.     glTranslatef(-(width/4-leg_width/4),-leg_height/2,-length+(length/4-leg_width/4));
  276.     glScalef(leg_width/2,leg_height/2,leg_width/2);
  277.     glTranslatef(-0.5,-1,-0.5);
  278.     cube(1,0.8,0);
  279.     glPopMatrix();
  280.  
  281.     glPushMatrix();
  282.     glTranslatef(-(width/4-leg_width/4),-leg_height/2,-length-(length/4-leg_width/4));
  283.     glScalef(leg_width/2,leg_height/2,leg_width/2);
  284.     glTranslatef(-0.5,-1,-0.5);
  285.     cube(1,0.8,0);
  286.     glPopMatrix();
  287.     //
  288.     glPushMatrix();
  289.     glTranslatef((width/4-leg_width/4)/2,-leg_height/2,-length-(length/4-leg_width/4));
  290.     glScalef(leg_width/2,leg_height/4,leg_width/2);
  291.     glTranslatef(-0.5,0.4,-0.5);
  292.     cube(0,0.2,0);
  293.     glPopMatrix();
  294.  
  295.     glPushMatrix();
  296.     glTranslatef(-(width/4-leg_width/4)/2,-leg_height/2,-length-(length/4-leg_width/4));
  297.     glScalef(leg_width/2,leg_height/4,leg_width/2);
  298.     glTranslatef(-0.5,0.4,-0.5);
  299.     cube(0,0.2,0);
  300.     glPopMatrix();
  301.     //
  302.     glPushMatrix();
  303.     glTranslatef(0,-leg_height/2,-length-(length/4-leg_width/4));
  304.     glScalef(width/1.5,leg_height/4,leg_width/2);
  305.     glTranslatef(-0.5,1.5,-0.5);
  306.     cube(1,1,0);
  307.     glPopMatrix();
  308.  
  309.     glPopMatrix();
  310. }
  311.  
  312. void chair_table()
  313. {
  314.     float length = 12;
  315.     float chair_length = 3.5;
  316.     float chair_width = 6;
  317.     float width = 19;
  318.     for (float i=-17 ; i<length; i= i+ 2*chair_length)
  319.     {
  320.         for (float j =-19 ; j<width; j= j+ 2*chair_width)
  321.         {
  322.             if(i==11 && j==-19)
  323.             {
  324.  
  325.             }
  326.             else
  327.             {
  328.                 glPushMatrix();
  329.                 glTranslatef(j,0,i);
  330.                 chair();
  331.                 glPopMatrix();
  332.             }
  333.  
  334.         }
  335.     }
  336. }
  337.  
  338. void wardrobe()
  339. {
  340.     glPushMatrix();
  341.     glTranslatef(-18,0,16);
  342.     glScalef(8,18,12);
  343.     glTranslatef(-0.5,0,-0.5);
  344.     cube(0.824, 0.412, 0.118);
  345.     glPopMatrix();
  346.  
  347.     glPushMatrix();
  348.     glTranslatef(-14,0,10);
  349.     glScalef(0.3,18,0.5);
  350.     glTranslatef(-0.5,0,-0.5);
  351.     cube(0.545, 0.271, 0.075);
  352.     glPopMatrix();
  353.  
  354.     glPushMatrix();
  355.     glTranslatef(-14,0,22);
  356.     glScalef(0.3,18,0.5);
  357.     glTranslatef(-0.5,0,-0.5);
  358.     cube(0.545, 0.271, 0.075);
  359.     glPopMatrix();
  360.  
  361.     glPushMatrix();
  362.     glTranslatef(-14,0,16);
  363.     glScalef(0.3,18,0.5);
  364.     glTranslatef(-0.5,0,-0.5);
  365.     cube(0.545, 0.271, 0.075);
  366.     glPopMatrix();
  367.  
  368.     glPushMatrix();
  369.     glTranslatef(-22,0,10);
  370.     glScalef(0.5,18,0.3);
  371.     glTranslatef(-0.5,0,-0.5);
  372.     cube(0.545, 0.271, 0.075);
  373.     glPopMatrix();
  374.  
  375.     glPushMatrix();
  376.     glTranslatef(-14,0,15);
  377.     glScalef(0.3,3,0.3);
  378.     glTranslatef(-0.5,2.5,-0.5);
  379.     cube(0.439, 0.502, 0.565);
  380.     glPopMatrix();
  381.  
  382.     glPushMatrix();
  383.     glTranslatef(-14,0,17);
  384.     glScalef(0.3,3,0.3);
  385.     glTranslatef(-0.5,2.5,-0.5);
  386.     cube(0.439, 0.502, 0.565);
  387.     glPopMatrix();
  388. }
  389.  
  390. void grid()
  391. {
  392.  
  393. }
  394.  
  395. void display(void)
  396. {
  397.     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  398.  
  399.     glMatrixMode( GL_PROJECTION );
  400.     glLoadIdentity();
  401.     glFrustum(-5,5,-5,5, 4, 70);
  402.  
  403.     glMatrixMode( GL_MODELVIEW );
  404.     glLoadIdentity();
  405.     gluLookAt(10,10,-28, 1,5,1, 0,1,0);
  406.  
  407.     glViewport(0, 0, windowHeight, windowWidth);
  408.     glRotatef(theta,axis_x,axis_y,0);
  409.  
  410.     //axes();
  411.     wall();
  412.     wardrobe();
  413.     chair_table();
  414.     fan();
  415.  
  416.     glFlush();
  417.     glutSwapBuffers();
  418.  
  419. }
  420.  
  421. static void key(unsigned char key, int x, int y)
  422. {
  423.     switch (key)
  424.     {
  425.     case 27 :
  426.     case 'q':
  427.         exit(0);
  428.         break;
  429.  
  430.     case ',':
  431.         theta++;
  432.         axis_y=1;
  433.         axis_x=0;
  434.         break;
  435.     case '.':
  436.         theta--;
  437.         axis_y=1;
  438.         axis_x=0;
  439.         break;
  440.     case 'n':
  441.         theta++;
  442.         axis_x=1;
  443.         axis_y=0;
  444.         break;
  445.     case 'm':
  446.         theta--;
  447.         axis_x=1;
  448.         axis_y=0;
  449.     case 'z':
  450.         flagRot=true;
  451.         break;
  452.     case 'x':
  453.         flagRot=false;
  454.         break;
  455.     }
  456.  
  457.     glutPostRedisplay();
  458. }
  459.  
  460. static void idle(void)
  461. {
  462.     if (flagRot == true)
  463.     {
  464.         f_spin = f_spin + 0.1;
  465.         if(f_spin > 360)
  466.             f_spin = 0;
  467.     }
  468.     glutPostRedisplay();
  469. }
  470.  
  471. int main(int argc, char**argv)
  472. {
  473.     glutInit(&argc,argv);
  474.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  475.     glutInitWindowPosition(200,200);
  476.     glutInitWindowSize(500,500);
  477.     glutCreateWindow("Rectangle");
  478.     glShadeModel(GL_SMOOTH);
  479.     glEnable(GL_DEPTH_TEST);
  480.     glutDisplayFunc(display);
  481.     glutKeyboardFunc(key);
  482.     glutIdleFunc(idle);
  483.     glutMainLoop();
  484. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×