Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- #include <gl\gl.h>
- #include "freeglut.h"
- #include <iostream>
- using namespace std;
- GLfloat n; //stopień, liczba zagłębień
- //Wymiary okna
- int screen_width = 640;
- int screen_height = 480;
- //funkcja związana ze zdarzeniem resize
- void rozmiar(int width, int height)
- {
- screen_width = width;
- screen_height = height;
- //Wyczyszczenie okna aktualnym kolorem czyszczącym
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- //Ustawienie widoku
- glViewport(0, 0, screen_width, screen_height);
- //ustawienie układu współrzędnych
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity(); //ponowne ustawienie - "reset" ukladu współrzędnych
- gluPerspective(45.0f, (GLfloat)screen_width / (GLfloat)screen_height, 1.0f, 1000.0f);
- glutPostRedisplay(); // Przerysowanie sceny
- }
- void np(GLfloat odl)
- {
- glBegin(GL_LINES);
- glColor3f(1, 1, 1);
- glVertex2f(0, 0);
- glVertex2f(0, -odl);
- glEnd();
- glTranslatef(0, -odl, 0);
- };
- void ws(GLfloat odl)
- {
- np(-odl);
- };
- void pw(GLfloat kt)
- {
- glRotatef(kt, 0, 0, 1);
- };
- void lw(GLfloat kt)
- {
- pw(-kt);
- };
- // rekurencyjna krzywa Kocha
- void kKocha(GLfloat a, GLfloat b)
- {
- if (b < 2)
- {
- np(a);
- return;
- }
- kKocha(a / 3, b - 1);
- lw(60);
- kKocha(a / 3,b - 1);
- pw(120);
- kKocha(a / 3, b - 1);
- lw(60);
- kKocha(a / 3, b - 1);
- };
- /**********************************************************
- Główna funkcja rysująca
- *********************************************************/
- void rysuj(void)
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Kasowanie ekranu
- //ustwienie trybu przekształceń na model
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -10); // przesuniecie obiektu przed kamerę
- //glClearColor(0, 0, 0, 0);
- //====================================Płatek Kocha (mnie)
- GLfloat bok = 3; //największy bok trójkąta
- pw(30);
- for (int i = 1; i < 4; i+=1)
- {
- kKocha(bok, n);
- pw(120);
- }
- glFlush(); // rysowanie w buforze
- glutSwapBuffers(); // Wysłanie na ekran
- }
- int main(int argc, char **argv)
- {
- // funkcja inicjująca do pracy bibliotekę GLUT
- glutInit(&argc, argv);
- //określenie trybu rysowania
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
- glutInitWindowSize(screen_width, screen_height);
- glutInitWindowPosition(0, 0);
- glutCreateWindow("Zadania 2 gr1");
- cout << "Wpisz stopien platku Kocha (liczbe zaglebien):" << endl;
- cin >> n;
- glutDisplayFunc(rysuj); // def. funkcji rysującej tzw. funkcji zwrotnej
- glutReshapeFunc(rozmiar);// def. obsługi zdarzenia resize (GLUT)
- // ustawienie renderowania
- glEnable(GL_DEPTH_TEST);
- glutMainLoop();// start obsługi komunikatów
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement