Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML/Graphics.hpp>
- #include <iostream>
- #include <ctime>
- #include <cmath>
- #include <math.h>
- #include <cstdlib>
- #include <utility>
- #include "BarnsleyFern.h"
- #include "SierpinskiTriangle.h"
- #include "SierpinskiSquare.h"
- //#include "RecursiveTree.h"
- void MorphInto(Fractal& fracToMorph,
- const Fractal& finalFrac,
- int steps,
- sf::RenderWindow& window,
- const float XWINDOW,
- const float YWINDOW);
- int main(int argc, char ** argv){
- const float X_WINDOW = 1200;
- const float Y_WINDOW = 800;
- int ITERATION = 0;
- bool animation = false;
- sf::RenderWindow window(sf::VideoMode(X_WINDOW, Y_WINDOW), "Fractals", sf::Style::Default | sf::Style::Titlebar | sf::Style::Close);
- const BarnsleyFern constFern(X_WINDOW, Y_WINDOW);
- const SierpinskiTriangle constSierp(X_WINDOW, Y_WINDOW);
- // fraktal paproć
- BarnsleyFern barnsley_fern(X_WINDOW, Y_WINDOW);
- // barnsley_fern.PrintXY();
- // fraktal trojkat sierpinskiego
- //SierpinskiTriangle sierpTriangle(X_WINDOW, Y_WINDOW);
- // fraktal kwadrat sierpinskiego
- //SierpinskiSquare sierpSq(X_WINDOW, Y_WINDOW);
- // fraktal drzewo rekursywne
- //Tree recursiveTree(X_WINDOW,Y_WINDOW,45.0f, 20.0f);
- sf::Event event;
- srand(time(NULL));
- std::cin.get();
- while(window.isOpen())
- {
- ITERATION++;
- while (window.pollEvent(event))
- {
- // Close window: exit
- if (event.type == sf::Event::Closed) {
- window.close();
- }
- // Escape pressed: exit
- if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
- window.close();
- }
- }
- // std::cout << ITERATION << std::endl;
- if(animation == false){
- //sierpSq.DrawFractal(window, ITERATION);
- //sierpTriangle.DrawFractal(window, ITERATION);
- barnsley_fern.DrawFractal(window, ITERATION);
- //recursiveTree.DrawFractal(window, ITERATION);
- if(ITERATION == ITERATION_MAX){
- //sierpSq.DrawWholeFractal(window);
- //sierpTriangle.DrawWholeFractal(window);
- barnsley_fern.DrawWholeFractal(window);
- //recursiveTree.DrawWholeFractal(window);
- std::cout << "KONIEC GENEROWANIA PAPROCI, TERAZ MORFUJEMY W FRAKTAL SIERPINSKIEGO [ENTER]" << std::endl;
- std::cin.get();
- animation = true;
- ITERATION = 0;
- }
- }
- else if(animation == true){
- MorphInto(barnsley_fern, constSierp, 155, window, X_WINDOW,Y_WINDOW);
- std::cin.get();
- MorphInto(barnsley_fern, constFern, 125, window, X_WINDOW,Y_WINDOW);
- std::cout << "KONIEC MORFOWANIA" << std::endl;
- std::cin.get();
- }
- } // end of while window is open
- return 0;
- } // end of main
- void MorphInto(Fractal& fracToMorph, const Fractal& finalFrac, int steps, sf::RenderWindow& window, const float XWINDOW, const float YWINDOW){
- std::cout << "Wolana funkcja MorhpInto"<< std::endl;
- // SierpinskiTriangle* currentFractal = new SierpinskiTriangle(XWINDOW,YWINDOW);
- std::pair<double, double>* step = new std::pair<double, double>[ITERATION_MAX];
- for(unsigned j = 0; j < ITERATION_MAX; j++){
- step[j].first = (finalFrac.GetX(j) - fracToMorph.GetX(j)) / (steps);
- step[j].second = (finalFrac.GetY(j) - fracToMorph.GetY(j)) / (steps);
- }
- for(int iteration = 0; iteration < steps; ++iteration){
- // dla kazdego fraktalu
- for(int j = 1; j < ITERATION_MAX; ++j){
- fracToMorph.GetX(j) += step[j].first;
- fracToMorph.GetY(j) += step[j].second;
- /* KOLOROWANIE */
- // sf::Color currentColor = sf::Color(
- // static_cast<int>(fracToMorph.m_point.getPosition().y + j) % 256,
- // 100,
- // static_cast<int>(fracToMorph.m_point.getPosition().x + 2 * j) % 256);
- // fracToMorph.m_point.setOutlineColor(currentColor);
- }
- window.clear();
- //std::cout << "Obecnie morfowany fraktal w iteracji numer : " << iteration << std::endl;
- fracToMorph.DrawWholeFractal(window);
- //std::cin.get();
- }
- // fern.DrawFractal(window,iter);
- delete[] step;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement