Guest User

Untitled

a guest
Jan 22nd, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.62 KB | None | 0 0
  1. /*--------------------------------*/
  2. //                                //
  3. //          Samuel Bednarik       //
  4. //                                //
  5. //             API - ITVR         //   
  6. //         Pocitacova Grafika     //
  7. //                                //
  8. /*--------------------------------*/
  9.  
  10. #include<stdio.h>
  11. #include<stdlib.h>
  12. #include "glut.h"
  13. #include<time.h>
  14.  
  15. int uhol=0;
  16. int uroven;
  17. int hrubka=1;
  18. int dlzkaZ;
  19.  
  20. void Natoc(int uhol)                //Funkcia na natocenie o uhol v smere osi Z.
  21. {
  22.     glRotatef(uhol,0,0,1);
  23. }
  24.  
  25. void Natoc2(int uhol)               //Funkcia na natocenie o uhol v smere osi Y.
  26. {
  27.     glRotatef(uhol,0,1,0);
  28. }
  29.  
  30. void Vpred2(int dlzkaY, int hrubka)     //Funkcia na vykreslenie ciary do predu,po Y-novej osi. Poziciu si zapamata.
  31. {
  32.     glLineWidth(hrubka);
  33.     glBegin(GL_LINES);
  34.         glColor3f(0.96,0.36,0.01);
  35.         glVertex3f(0,0,0);
  36.         glVertex3f(0,dlzkaY,0);
  37.     glEnd();
  38.     glTranslatef(0,dlzkaY,0);       //Funkcia na zapamatanie pozicie.
  39. }
  40.  
  41. void Listy()                        //Funkcia vykresli list.
  42. {
  43.     glBegin(GL_POLYGON);
  44.         glColor3f(0,1,0);
  45.         glVertex3f(0,0,0);
  46.         glVertex3f(1,1,0);
  47.         glVertex3f(3,4,0);
  48.         glVertex3f(3,6,0);
  49.         glVertex3f(2,6,0);
  50.         glVertex3f(1,4,0);
  51.         glVertex3f(1.5,8,0);
  52.         glVertex3f(0,8.5,0);
  53.         glVertex3f(-1.5,8,0);
  54.         glVertex3f(-1,4,0);
  55.         glVertex3f(-2,6,0);
  56.         glVertex3f(-3,6,0);
  57.         glVertex3f(-3,6,0);
  58.         glVertex3f(-1,1,0);
  59.     glEnd();
  60. }
  61.  
  62. void VpredKmen(int dlzkaY, int hrubka)              //Funkcia na vykreslenie ciary do predu,po Y-novej osi. Poziciu si zapamata.
  63. {
  64.     glLineWidth(hrubka);
  65.     glBegin(GL_LINES);
  66.         glColor3f(0.96,0.36,0.01);
  67.         glVertex3f(0,0,0);
  68.         glVertex3f(0,dlzkaY,0);
  69.     glEnd();
  70.     glTranslatef(0,dlzkaY,0);       //Funkcia na zapamatanie pozicie.
  71. }
  72.  
  73. void Spat2(int dlzkaY)              //Funkcia na navrat do zaciatocnej pozicie.
  74. {
  75.     glTranslatef(0,-dlzkaY,0);
  76. }
  77.  
  78. void Kresli2(int uroven, int dlzka)
  79. {
  80.     if(uroven > 0)
  81.     {
  82.         float cisloA = ((rand() % 100) + 151);
  83.         cisloA /= 100;     
  84.         float uholA = ((rand() % 100) + 151);
  85.         uholA /= 10;
  86.         float uholB = (rand() % 20);
  87.         float uholZ = 10;
  88.        
  89.         int Nahodnost = ((rand() % 3) + 2);
  90.  
  91.         switch (Nahodnost)
  92.             {
  93.                 case 1:
  94.                     Natoc(uholB);       //30
  95.                     Vpred2(dlzka,uroven);
  96.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  97.                     Spat2(dlzka);
  98.                     Natoc(-uholB);      //-30
  99.                     printf("Nahodnost je: %d",Nahodnost);
  100.                     break;
  101.                 case 2:
  102.                     uholB = (rand() % 30);
  103.                     cisloA = (rand() % 100) + 101;
  104.                     cisloA /= 100;
  105.  
  106.                     Natoc2(120+uholB);          //uholZ+uholB
  107.                     Natoc(7+uholB);             //uholZ+uholB
  108.                     Vpred2(dlzka,uroven);
  109.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  110.                     Spat2(dlzka);
  111.                     Natoc(-7-uholB);            //uholZ-uholB
  112.                     Natoc2(-120-uholB);
  113.  
  114.                     uholB = (rand() % 20);
  115.                     cisloA = (rand() % 60) + 101;
  116.                     cisloA /= 100;
  117.                    
  118.                     Natoc2(50+uholB);           //uholZ+uholB
  119.                     Natoc(5+uholB);             //uholZ+uholB
  120.                     Vpred2(dlzka,uroven);
  121.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  122.                     Spat2(dlzka);
  123.                     Natoc(-5-uholB);            //uholZ-uholB
  124.                     Natoc2(-50-uholB);
  125.                     break;
  126.                 case 3:
  127.                     Natoc2(120);//120
  128.                     Natoc(uholZ+uholB); //40
  129.                     Vpred2(dlzka,uroven);
  130.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  131.                     Spat2(dlzka);
  132.                     Natoc(-uholZ-uholB);        //-40
  133.                    
  134.                     uholB = (rand() % 40);
  135.                     cisloA = (rand() % 100) + 101;
  136.                     cisloA /= 100;
  137.                    
  138.                     Natoc2(120);    //120
  139.                     Natoc(uholZ+uholB);     //40
  140.                     Vpred2(dlzka,uroven);
  141.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  142.                     Spat2(dlzka);
  143.                     Natoc(-uholZ-uholB);        //-40
  144.        
  145.                     cisloA = (rand() % 100) + 101;
  146.                     uholB = (rand() % 40);
  147.                     cisloA /= 100;
  148.                            
  149.                     Natoc2(120);    //120
  150.                     Natoc(uholZ+uholB);     //40
  151.                     Vpred2(dlzka,uroven);
  152.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  153.                     Spat2(dlzka);
  154.                     Natoc(-uholZ-uholB);        //-40
  155.                     break;
  156.                 case 4:
  157.                     Natoc2(90);//120
  158.                     Natoc(uholZ+uholB); //40
  159.                     Vpred2(dlzka,uroven);
  160.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  161.                     Spat2(dlzka);
  162.                     Natoc(-uholZ-uholB);        //-40
  163.                    
  164.                     uholB = (rand() % 40);
  165.                     cisloA = (rand() % 100) + 101;
  166.                     cisloA /= 100;
  167.                    
  168.                     Natoc2(90); //120
  169.                     Natoc(uholZ+uholB);     //40
  170.                     Vpred2(dlzka,uroven);
  171.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  172.                     Spat2(dlzka);
  173.                     Natoc(-uholZ-uholB);        //-40
  174.        
  175.                     cisloA = (rand() % 100) + 101;
  176.                     uholB = (rand() % 40);
  177.                     cisloA /= 100;
  178.                            
  179.                     Natoc2(90); //120
  180.                     Natoc(uholZ+uholB);     //40
  181.                     Vpred2(dlzka,uroven);
  182.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  183.                     Spat2(dlzka);
  184.                     Natoc(-uholZ-uholB);        //-40
  185.  
  186.                     Natoc2(90);//120
  187.                     Natoc(uholZ+uholB); //40
  188.                     Vpred2(dlzka,uroven);
  189.                     Kresli2(uroven-1,(dlzka/2)+cisloA);
  190.                     Spat2(dlzka);
  191.                     Natoc(-uholZ-uholB);
  192.                     break;
  193.  
  194.                     printf("Cafko");
  195.                     break;                 
  196.         default:
  197.             break;
  198.         }
  199.     }else
  200.         {
  201.             Listy();
  202.             }
  203. }
  204.        
  205. void Call()                         //Funkcia vytvarajuca CallList v ktorom sa nachadza vykresleny strom pomocou rekurzie.
  206. {  
  207.     glNewList(1,GL_COMPILE);
  208.         int dlzka=30;
  209.         uroven=6;
  210.         glTranslatef(0,-70,0);
  211.         VpredKmen(30,uroven);
  212.         Kresli2(uroven,dlzka);
  213.     glEndList();
  214. }
  215.  
  216. void Display(void)                  //Funkcia umoznujuca natocenie uhla, zavolanie CallListu pomocou ktoreho volam vykresleny strom.
  217. {
  218.     glLoadIdentity();
  219.     glScalef(1/100.0,1/100.0,1/100.0);      //Zmena rozlisenia.
  220.     glClear(GL_COLOR_BUFFER_BIT);
  221.     glRotatef(uhol,0,1,0);
  222.     uhol++;
  223.         glCallList(1);
  224.         glFlush();
  225.         glutSwapBuffers();
  226. }
  227.  
  228. void Timing(int konstanta)              //Funkcia na vykreslenie pri posune.
  229. {  
  230.     glutPostRedisplay();
  231.     glutTimerFunc(30,Timing,0);
  232. }
  233.  
  234. int main(int argc, char **argv)
  235. {
  236.     srand ( time(NULL) );
  237.     glutInit(&argc,argv);
  238.     glutInitWindowSize(1300,700);
  239.     glutInitWindowPosition(0,0);
  240.     glutCreateWindow("Zadanie1");
  241.     Call();
  242.     glutDisplayFunc(Display);
  243.     glutTimerFunc(0,Timing,0);
  244.     glutMainLoop();
  245.  
  246.     return 0;
  247. }
Add Comment
Please, Sign In to add comment