-LIR-

FractalCerasela

Jun 1st, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <complex>
  3. #include <graphics.h>
  4.  
  5. using namespace std;
  6.  
  7. /// Functia care verifica daca desenez un punct dat
  8. bool convergeJulia( complex<double> point, complex<double> c, double d, int precision )
  9. {
  10.     complex<double> z;
  11.     z = point;
  12.  
  13.     for( int i=1 ; i<=precision ; i++ )
  14.     {
  15.         z = pow(z,d) + c;
  16.         if( abs(z) >= 2 )
  17.             return false;
  18.     }
  19.     return true;
  20. }
  21.  
  22. int main()
  23. {
  24.     double length = 4;
  25.     complex<double> center(0,0);
  26.  
  27.     int precision = 100;
  28.     complex<double> parameter1(-0.8,0.156);
  29.     double parameter2 = 2;
  30.  
  31.     /// Ca sa arate altfel schimba valoarile pt "parameter1" si "precision"
  32.     /// Niste exemple sunt (-0.726,0.188) si precision 200
  33.     ///                    (−0.835,-0.2321i) si precision 45
  34.     ///                    (-0.618,0) si precision 70
  35.     ///                    (0,-0.8) si precision 30
  36.     ///                    (0.285,0.01) si precision 60
  37.     ///                    (-0.4,0.6) si precision 60
  38.     ///                    (-0.8,0.156) si precision 100
  39.  
  40.     /// Schimband "length" si "center" se va afisa o zona diferita din fractal,
  41.     /// zona din patratul de latura length, centrata in punctul center.
  42.  
  43.     initwindow(800,800);
  44.  
  45.     /// Verific ce puncte trebuie desenate si le desenez
  46.     for( double x = real(center)-length/2 ; x <= real(center)+length/2 ; x += length/getmaxx()/1.2 )
  47.         for( double y = imag(center)-length/2 ; y <= imag(center)+length/2 ; y += length/getmaxy()/1.2 )
  48.         {
  49.             complex<double> point(x,y);
  50.             if( convergeJulia(point,parameter1,parameter2,precision) )
  51.             {
  52.                 /// afisare pe ecran
  53.                 putpixel((x-real(center)+length/2)*getmaxx()/length,(y-imag(center)+length/2)*getmaxy()/length,WHITE);
  54.             }
  55.         }
  56.     getch();
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment