Advertisement
Guest User

Untitled

a guest
May 21st, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.63 KB | None | 0 0
  1. #pragma once
  2. #include <cmath>
  3. #include <cstdlib>
  4. #include <ctime>
  5. #include <iostream>
  6. #include <utility>
  7.  
  8. #include <SFML/Window.hpp>
  9. #include <SFML/Graphics.hpp>
  10.  
  11.  
  12. #define ITERATION_MAX 15000
  13.  
  14. class Fractal{
  15. public:
  16.     Fractal(const float XWINDOW, const float YWINDOW);
  17.     ~Fractal();
  18.  
  19.    
  20.     virtual void DrawFractal(sf::RenderWindow& window, int iter);
  21.     virtual void DrawWholeFractal(sf::RenderWindow& window);
  22.  
  23.     virtual void CalculatePoints() = 0;
  24.     virtual void CalcProbability() = 0;
  25.  
  26.     virtual float Map_pointX(float x) = 0;
  27.     virtual float Map_pointY(float y) = 0;
  28.  
  29.     virtual float GetX(int iter)const{return m_xy[iter].first; }
  30.     virtual float GetY(int iter)const{return m_xy[iter].second; }
  31.  
  32.     virtual float& GetX(int iter){return m_xy[iter].first; }
  33.     virtual float& GetY(int iter){return m_xy[iter].second; }
  34.  
  35.     virtual void PrintXY()const;
  36.     virtual void MapAllPoints();
  37.  
  38.     friend void MorphInto(  Fractal& fracToMorph,
  39.                             const Fractal& finalFrac,
  40.                             int steps,
  41.                             sf::RenderWindow& window,
  42.                             const float XWINDOW,
  43.                             const float YWINDOW);
  44.  
  45. protected:
  46.     float m_xwindow;
  47.     float m_ywindow;
  48.  
  49.     int m_probability;
  50.  
  51.     std::pair<float, float>* m_xy;
  52.  
  53.     sf::CircleShape m_point;
  54.  
  55. };
  56.  
  57.  
  58. Fractal::Fractal(const float XWINDOW, const float YWINDOW)
  59. :m_xwindow(XWINDOW), m_ywindow(YWINDOW)
  60. {
  61.     m_xy = new std::pair<float, float>[ITERATION_MAX];
  62.  
  63.     m_point = sf::CircleShape(0.01);
  64.     m_point.setOutlineThickness(0.9);
  65.     m_xy[0].first = XWINDOW / 2;
  66.     m_xy[0].second = YWINDOW / 2;
  67. }
  68.  
  69. Fractal::~Fractal(){
  70.     delete[] m_xy;
  71. }
  72. void Fractal::DrawFractal(sf::RenderWindow& window, int i){
  73.    
  74.     // std::cout << "mapped point: " << Map_pointX(m_xy[i].first)  << ",  " << Map_pointY( m_xy[i].second) << std::endl;
  75.      
  76.     m_point.setPosition(m_xy[i].first, m_xy[i].second);
  77.     window.draw(m_point);  
  78.     window.display();
  79.    
  80. }
  81.  
  82. void Fractal::DrawWholeFractal(sf::RenderWindow& window){
  83.     for(int i = 0; i < ITERATION_MAX; ++i){
  84.  
  85.         m_point.setPosition(m_xy[i].first, m_xy[i].second);
  86.         window.draw(m_point);  
  87.  
  88.     }
  89.     window.display();
  90. }
  91.  
  92.  
  93.  
  94.  
  95.  
  96. void Fractal::PrintXY()const{
  97.     for(int i = 0; i < ITERATION_MAX; i++){
  98.         std::cout << m_xy[i].first << ", " << m_xy[i].second << std::endl;
  99.     }
  100. }
  101.  
  102.  
  103.  
  104. void Fractal::MapAllPoints(){
  105.     for(int i = 0; i < ITERATION_MAX; ++i){
  106.         m_xy[i].first  = Map_pointX(m_xy[i].first);
  107.         m_xy[i].second = Map_pointY(m_xy[i].second);
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement