Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.23 KB | None | 0 0
  1. #include<iostream>
  2. #include <fstream>
  3. #include <GL/glut.h>
  4.  
  5. using namespace std;
  6.  
  7. void display();
  8. void specialKeys();
  9. void szescian();
  10. void ostroslup();
  11.  
  12.  
  13. double rotate_y = 25;
  14. double rotate_x = -15;
  15.  
  16. GLfloat W[9][3] =
  17. {
  18.     {0.5, 0.5, -0.5},//przod prawy gora 0
  19.     {-0.5, 0.5, -0.5},//przod lewy gora 1
  20.     {0.5, -0.5, -0.5},//przod prawy dol 2
  21.     {-0.5, -0.5, -0.5},//przod lewy dol 3
  22.     {0.5f, 0.5f, 0.5f},//tyl prawy gora 4
  23.     {-0.5f, -0.5f, 0.5f},//tyl lewy dol 5
  24.     {-0.5f, 0.5f, 0.5f},//tyl lewy gora 6
  25.     {0.5f, -0.5f, 0.5f},//tyl prawo dol 7
  26.     {0,0.75,0} //wierzcholek ostroslupa 8
  27. };
  28.  
  29. void WypiszDoPliku()
  30. {
  31.     ofstream fout;
  32.     fout.open("wierzcholki.txt");
  33.  
  34.     if (fout.good())
  35.     {
  36.         cout << "Każda wiersz to wierzcholek o wspolrzednych 'x','y' oraz 'z' zawarty w kalumnach " << endl;
  37.         for (unsigned i = 0; i < 9; i++)
  38.         {
  39.             for (unsigned j = 0; j < 3; j++)
  40.             {
  41.                 fout << W[i][j] << " ";
  42.             }
  43.             fout << endl;
  44.         }
  45.        
  46.         fout.close();
  47.     }
  48.  
  49. }
  50.  
  51. void display() {
  52.  
  53.     //  Clear screen and Z-buffer
  54.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  55.  
  56.     // Reset transformations
  57.     glLoadIdentity();
  58.  
  59.    
  60.  
  61.     // Rotate when user changes rotate_x and rotate_y
  62.     glRotatef(rotate_x, 1.0, 0.0, 0.0);
  63.     glRotatef(rotate_y, 0.0, 1.0, 0.0);
  64.  
  65.     szescian();
  66.     ostroslup();
  67.  
  68.  
  69.  
  70.  
  71.     glFlush();
  72.     glutSwapBuffers();
  73.  
  74. }
  75.  
  76.  
  77.  
  78.  
  79. // ----------------------------------------------------------
  80. // specialKeys() Callback Function
  81. // ----------------------------------------------------------
  82. void specialKeys(int key, int x, int y) {
  83.  
  84.     //  Right arrow - increase rotation by 5 degree
  85.     if (key == GLUT_KEY_RIGHT)
  86.         rotate_y += 5;
  87.  
  88.     //  Left arrow - decrease rotation by 5 degree
  89.     else if (key == GLUT_KEY_LEFT)
  90.         rotate_y -= 5;
  91.  
  92.     else if (key == GLUT_KEY_UP)
  93.         rotate_x += 5;
  94.  
  95.     else if (key == GLUT_KEY_DOWN)
  96.         rotate_x -= 5;
  97.  
  98.     //  Request display update
  99.     glutPostRedisplay();
  100.  
  101. }
  102.  
  103. // ----------------------------------------------------------
  104. // main() function
  105. // ----------------------------------------------------------
  106. int main(int argc, char* argv[]) {
  107.  
  108.     //  Initialize GLUT and process user parameters
  109.     glutInit(&argc, argv);
  110.  
  111.     //  Request double buffered true color window with Z-buffer
  112.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  113.     glutInitWindowSize(800, 800);
  114.     glutInitWindowPosition(0, 0);
  115.     // Create window
  116.     glutCreateWindow("Awesome Cube");
  117.    
  118.     //  Enable Z-buffer depth test
  119.     glEnable(GL_DEPTH_TEST);
  120.  
  121.     // Callback functions
  122.     glutDisplayFunc(display);
  123.     glutSpecialFunc(specialKeys);
  124.     WypiszDoPliku();
  125.     //  Pass control to GLUT for events
  126.     glutMainLoop();
  127.  
  128.    
  129.    
  130.     return 0;
  131.  
  132. }
  133.  
  134.  
  135.  
  136. void szescian()
  137. {
  138.  
  139.     //ZIELONY
  140.     glPushMatrix();
  141.     glBegin(GL_LINES);
  142.     glColor3f(0, 1, 0);
  143.     //lewa - gora
  144.     glVertex3f(W[0][0],W[0][1],W[0][2]);
  145.     glVertex3f(W[1][0],W[1][1],W[1][2]);
  146.  
  147.     //prawa - gora
  148.     glVertex3f(W[0][0], W[0][1], W[0][2]);
  149.     glVertex3f(W[4][0],W[4][1],W[4][2]);
  150.  
  151.     //pion - wysokosc
  152.     glVertex3f(W[0][0], W[0][1], W[0][2]);
  153.     glVertex3f(W[2][0],W[2][1],W[2][2]);
  154.  
  155.     glEnd();
  156.     glPopMatrix();
  157.  
  158.  
  159.     //CZERWONY
  160.     glPushMatrix();
  161.     glBegin(GL_LINES);
  162.     glColor3f(1, 0, 0);
  163.     //prawy - dol
  164.     glVertex3f(W[3][0],W[3][1],W[3][2]);
  165.     glVertex3f(W[2][0], W[2][1], W[2][2]);
  166.  
  167.     //pion - wysokosc
  168.     glVertex3f(W[3][0], W[3][1], W[3][2]);
  169.     glVertex3f(W[1][0], W[1][1], W[1][2]);
  170.  
  171.     //lewy - dol
  172.     glVertex3f(W[3][0], W[3][1], W[3][2]);
  173.     glVertex3f(W[5][0],W[5][1],W[5][2]);
  174.  
  175.     glEnd();
  176.     glPopMatrix();
  177.  
  178.  
  179.     //NIEBIESKI
  180.     glPushMatrix();
  181.     glBegin(GL_LINES);
  182.     glColor3f(0, 0, 1);
  183.     //prawy - gora
  184.     glVertex3f(W[6][0],W[6][1],W[6][2]);
  185.     glVertex3f(W[1][0], W[1][1], W[1][2]);
  186.  
  187.     //pion - wysokosc
  188.     glVertex3f(W[6][0], W[6][1], W[6][2]);
  189.     glVertex3f(W[5][0], W[5][1], W[5][2]);
  190.  
  191.     //lewy - gora
  192.     glVertex3f(W[6][0], W[6][1], W[6][2]);
  193.     glVertex3f(W[4][0], W[4][1], W[4][2]);
  194.  
  195.     glEnd();
  196.     glPopMatrix();
  197.  
  198.     //FIOLETOWY
  199.     glPushMatrix();
  200.     glBegin(GL_LINES);
  201.     glColor3f(1, 0, 1);
  202.     //prawy - dol
  203.     glVertex3f(W[7][0], W[7][1], W[7][2]);
  204.     glVertex3f(W[5][0], W[5][1], W[5][2]);
  205.  
  206.     //pion - wysokosc
  207.     glVertex3f(W[7][0], W[7][1], W[7][2]);
  208.     glVertex3f(W[4][0], W[4][1], W[4][2]);
  209.  
  210.     //lewo - dol
  211.     glVertex3f(W[7][0], W[7][1], W[7][2]);
  212.     glVertex3f(W[2][0], W[2][1], W[2][2]);
  213.  
  214.     glEnd();
  215.     glPopMatrix();
  216. }
  217.  
  218. void ostroslup()
  219. {
  220.     //BLEKITNY
  221.     glPushMatrix();
  222.     glBegin(GL_LINES);
  223.     glColor3f(0, 1, 1);
  224.     //lewa - przod
  225.     glVertex3f(W[8][0], W[8][1], W[8][2]);
  226.     glVertex3f(W[1][0], W[1][1], W[1][2]);
  227.     //prawa przod
  228.     glVertex3f(W[8][0], W[8][1], W[8][2]);
  229.     glVertex3f(W[0][0], W[0][1], W[0][2]);
  230.     //prawa tyl
  231.     glVertex3f(W[8][0], W[8][1], W[8][2]);
  232.     glVertex3f(W[4][0], W[4][1], W[4][2]);
  233.     //lewa tyl
  234.     glVertex3f(W[8][0], W[8][1], W[8][2]);
  235.     glVertex3f(W[6][0], W[6][1], W[6][2]);
  236.  
  237.     glEnd();
  238.     glPopMatrix();
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement