Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*--------------------------------*/
- // //
- // Samuel Bednarik //
- // //
- // API - ITVR //
- // Pocitacova Grafika //
- // //
- /*--------------------------------*/
- #include<stdio.h>
- #include<stdlib.h>
- #include "glut.h"
- #include<time.h>
- int uhol=0;
- int uroven;
- int hrubka=1;
- int dlzkaZ;
- void Natoc(int uhol) //Funkcia na natocenie o uhol v smere osi Z.
- {
- glRotatef(uhol,0,0,1);
- }
- void Natoc2(int uhol) //Funkcia na natocenie o uhol v smere osi Y.
- {
- glRotatef(uhol,0,1,0);
- }
- void Vpred2(int dlzkaY, int hrubka) //Funkcia na vykreslenie ciary do predu,po Y-novej osi. Poziciu si zapamata.
- {
- glLineWidth(hrubka);
- glBegin(GL_LINES);
- glColor3f(0.96,0.36,0.01);
- glVertex3f(0,0,0);
- glVertex3f(0,dlzkaY,0);
- glEnd();
- glTranslatef(0,dlzkaY,0); //Funkcia na zapamatanie pozicie.
- }
- void Listy() //Funkcia vykresli list.
- {
- glBegin(GL_POLYGON);
- glColor3f(0,1,0);
- glVertex3f(0,0,0);
- glVertex3f(1,1,0);
- glVertex3f(3,4,0);
- glVertex3f(3,6,0);
- glVertex3f(2,6,0);
- glVertex3f(1,4,0);
- glVertex3f(1.5,8,0);
- glVertex3f(0,8.5,0);
- glVertex3f(-1.5,8,0);
- glVertex3f(-1,4,0);
- glVertex3f(-2,6,0);
- glVertex3f(-3,6,0);
- glVertex3f(-3,6,0);
- glVertex3f(-1,1,0);
- glEnd();
- }
- void VpredKmen(int dlzkaY, int hrubka) //Funkcia na vykreslenie ciary do predu,po Y-novej osi. Poziciu si zapamata.
- {
- glLineWidth(hrubka);
- glBegin(GL_LINES);
- glColor3f(0.96,0.36,0.01);
- glVertex3f(0,0,0);
- glVertex3f(0,dlzkaY,0);
- glEnd();
- glTranslatef(0,dlzkaY,0); //Funkcia na zapamatanie pozicie.
- }
- void Spat2(int dlzkaY) //Funkcia na navrat do zaciatocnej pozicie.
- {
- glTranslatef(0,-dlzkaY,0);
- }
- void Kresli2(int uroven, int dlzka)
- {
- if(uroven > 0)
- {
- float cisloA = ((rand() % 100) + 151);
- cisloA /= 100;
- float uholA = ((rand() % 100) + 151);
- uholA /= 10;
- float uholB = (rand() % 20);
- float uholZ = 10;
- int Nahodnost = ((rand() % 3) + 2);
- switch (Nahodnost)
- {
- case 1:
- Natoc(uholB); //30
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-uholB); //-30
- printf("Nahodnost je: %d",Nahodnost);
- break;
- case 2:
- uholB = (rand() % 30);
- cisloA = (rand() % 100) + 101;
- cisloA /= 100;
- Natoc2(120+uholB); //uholZ+uholB
- Natoc(7+uholB); //uholZ+uholB
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-7-uholB); //uholZ-uholB
- Natoc2(-120-uholB);
- uholB = (rand() % 20);
- cisloA = (rand() % 60) + 101;
- cisloA /= 100;
- Natoc2(50+uholB); //uholZ+uholB
- Natoc(5+uholB); //uholZ+uholB
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-5-uholB); //uholZ-uholB
- Natoc2(-50-uholB);
- break;
- case 3:
- Natoc2(120);//120
- Natoc(uholZ+uholB); //40
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-uholZ-uholB); //-40
- uholB = (rand() % 40);
- cisloA = (rand() % 100) + 101;
- cisloA /= 100;
- Natoc2(120); //120
- Natoc(uholZ+uholB); //40
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-uholZ-uholB); //-40
- cisloA = (rand() % 100) + 101;
- uholB = (rand() % 40);
- cisloA /= 100;
- Natoc2(120); //120
- Natoc(uholZ+uholB); //40
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-uholZ-uholB); //-40
- break;
- case 4:
- Natoc2(90);//120
- Natoc(uholZ+uholB); //40
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-uholZ-uholB); //-40
- uholB = (rand() % 40);
- cisloA = (rand() % 100) + 101;
- cisloA /= 100;
- Natoc2(90); //120
- Natoc(uholZ+uholB); //40
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-uholZ-uholB); //-40
- cisloA = (rand() % 100) + 101;
- uholB = (rand() % 40);
- cisloA /= 100;
- Natoc2(90); //120
- Natoc(uholZ+uholB); //40
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-uholZ-uholB); //-40
- Natoc2(90);//120
- Natoc(uholZ+uholB); //40
- Vpred2(dlzka,uroven);
- Kresli2(uroven-1,(dlzka/2)+cisloA);
- Spat2(dlzka);
- Natoc(-uholZ-uholB);
- break;
- printf("Cafko");
- break;
- default:
- break;
- }
- }else
- {
- Listy();
- }
- }
- void Call() //Funkcia vytvarajuca CallList v ktorom sa nachadza vykresleny strom pomocou rekurzie.
- {
- glNewList(1,GL_COMPILE);
- int dlzka=30;
- uroven=6;
- glTranslatef(0,-70,0);
- VpredKmen(30,uroven);
- Kresli2(uroven,dlzka);
- glEndList();
- }
- void Display(void) //Funkcia umoznujuca natocenie uhla, zavolanie CallListu pomocou ktoreho volam vykresleny strom.
- {
- glLoadIdentity();
- glScalef(1/100.0,1/100.0,1/100.0); //Zmena rozlisenia.
- glClear(GL_COLOR_BUFFER_BIT);
- glRotatef(uhol,0,1,0);
- uhol++;
- glCallList(1);
- glFlush();
- glutSwapBuffers();
- }
- void Timing(int konstanta) //Funkcia na vykreslenie pri posune.
- {
- glutPostRedisplay();
- glutTimerFunc(30,Timing,0);
- }
- int main(int argc, char **argv)
- {
- srand ( time(NULL) );
- glutInit(&argc,argv);
- glutInitWindowSize(1300,700);
- glutInitWindowPosition(0,0);
- glutCreateWindow("Zadanie1");
- Call();
- glutDisplayFunc(Display);
- glutTimerFunc(0,Timing,0);
- glutMainLoop();
- return 0;
- }
Add Comment
Please, Sign In to add comment