d9b884196d85871c228a6af3d74d361a3012fb77
[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 "cudaTools.h"
5 #include "AnimableFonctionel_I.h"
6 #include "MathTools.h"
7 #include "VariateurF.h"
8
9 class Fractal : public AnimableFonctionel_I
10 {
11 public:
12 Fractal(int w, int h);
13 virtual ~Fractal();
14
15 public:
16 int getW() /*override*/;
17 int getH() /*override*/;
18 DomaineMath* getDomaineMathInit() /*override*/;
19
20 string getTitle(void) /*override*/;
21
22 protected:
23 // Inputs
24 const int w;
25 const int h;
26
27 // Tools
28 const dim3 dg;
29 const dim3 db;
30
31 DomaineMath* ptrDomaineMathInit;
32
33 // Outputs
34 const string title;
35 };
36
37 class FractalMandelbrot : public Fractal
38 {
39 public:
40 FractalMandelbrot(int w, int h, float dn);
41 void animationStep();
42 float getT() /*override*/;
43
44 private:
45 void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/;
46
47 VariateurF variateurAnimationN;
48
49 float n;
50 };
51
52 class FractalJulia : public Fractal
53 {
54 public:
55 FractalJulia(int w, int h, float dn, float z_r_min, float z_r_max, float z_i_min, float z_i_max);
56 void animationStep();
57 float getT() /*override*/;
58
59 private:
60 void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/;
61
62 float z_r, z_i;
63 VariateurF variateurAnimationI;
64 VariateurF variateurAnimationR;
65 };
66
67 #endif