Cleanage.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 02_Mandelbrot_Julia / moo / host / Fractal.h
1 #ifndef FRACTAL_H_
2 #define FRACTAL_H_
3
4 #include <vector>
5 #include <string>
6
7 #include "cudaTools.h"
8 #include "AnimableFonctionel_I.h"
9 #include "MathTools.h"
10 #include "VariateurI.h"
11 #include "VariateurF.h"
12
13 class Fractal : public AnimableFonctionel_I
14 {
15 public:
16 Fractal(int w, int h);
17 virtual ~Fractal();
18
19 public:
20 int getW() /*override*/;
21 int getH() /*override*/;
22 DomaineMath* getDomaineMathInit() /*override*/;
23
24 string getTitle(void) /*override*/;
25
26 protected:
27 // Inputs
28 const int w;
29 const int h;
30
31 // Tools
32 const dim3 dg;
33 const dim3 db;
34
35 DomaineMath* ptrDomaineMathInit;
36
37 // Outputs
38 const string title;
39 };
40
41 class FractalMandelbrot : public Fractal
42 {
43 public:
44 FractalMandelbrot(int w, int h, int dn);
45 void animationStep();
46
47 std::vector<std::string> getNames();
48 void getValues(float* values);
49
50 private:
51 void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/;
52
53 VariateurI variateurAnimationN;
54 int n;
55 };
56
57 class FractalJulia : public Fractal
58 {
59 public:
60 FractalJulia(int w, int h, int n, float z_r_min, float z_r_max, float z_i_min, float z_i_max);
61 void animationStep();
62
63 std::vector<std::string> getNames();
64 void getValues(float* values);
65
66 private:
67 void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/;
68
69 const int n;
70
71 float z_r, z_i;
72 VariateurF variateurAnimationI; // Variateur pour z_i.
73 VariateurF variateurAnimationR; // Variateur pour z_r.
74 };
75
76 #endif