# 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.
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. {
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.         {
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 );
401.     glFrustum(-5,5,-5,5, 4, 70);
402.
403.     glMatrixMode( GL_MODELVIEW );
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");
479.     glEnable(GL_DEPTH_TEST);
480.     glutDisplayFunc(display);
481.     glutKeyboardFunc(key);
482.     glutIdleFunc(idle);
483.     glutMainLoop();
484. }
RAW Paste Data