#ifndef FRACTAL_H_\r
#define FRACTAL_H_\r
\r
+#include <vector>\r
+#include <string>\r
+\r
#include "cudaTools.h"\r
#include "AnimableFonctionel_I.h"\r
#include "MathTools.h"\r
+#include "VariateurI.h"\r
#include "VariateurF.h"\r
\r
class Fractal : public AnimableFonctionel_I\r
{\r
public:\r
- Fractal(int w, int h, float dt, int n);\r
- virtual ~Fractal(void);\r
+ Fractal(int w, int h);\r
+ virtual ~Fractal();\r
\r
public:\r
- void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath) /*override*/;\r
- void animationStep() /*override*/;\r
+ int getW() /*override*/;\r
+ int getH() /*override*/;\r
+ DomaineMath* getDomaineMathInit() /*override*/;\r
+\r
+ protected:\r
+ // Inputs\r
+ const int w;\r
+ const int h;\r
\r
- int getW() /*override*/;\r
- int getH() /*override*/;\r
- DomaineMath* getDomaineMathInit() /*override*/;\r
+ // Tools\r
+ const dim3 dg;\r
+ const dim3 db;\r
\r
- float getT() /*override*/;\r
- string getTitle(void) /*override*/;\r
+ DomaineMath* ptrDomaineMathInit;\r
+ };\r
+\r
+class FractalMandelbrot : public Fractal\r
+ {\r
+ public:\r
+ FractalMandelbrot(int w, int h, int dn, bool multiGPU = false);\r
+ ~FractalMandelbrot();\r
+ void animationStep();\r
+\r
+ std::vector<std::string> getNames();\r
+ void getValues(float* values);\r
+\r
+ std::string getTitle();\r
\r
private:\r
- // Inputs\r
- const int w;\r
- const int h;\r
- int n;\r
+ void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath);\r
+\r
+ VariateurI variateurAnimationN;\r
+ int n;\r
\r
- // Tools\r
- const dim3 dg;\r
- const dim3 db;\r
- float t;\r
+ string title;\r
+\r
+ // Utilisé uniquement dans le cadre du multi-GPU.\r
+ bool multiGPU;\r
+ uchar4** ptrDevPixelsMultGPU; // La mémoire alloué pour les GPU autres que le premier\r
+ int hFirstDevice; // Hauteur de l'image à traiter par le premier GPU.\r
+ int hDevices; // Hauteur de l'image à traiter par les autres GPU.\r
+ };\r
+\r
+class FractalJulia : public Fractal\r
+ {\r
+ public:\r
+ FractalJulia(int w, int h, int n, float z_r_min, float z_r_max, float z_i_min, float z_i_max);\r
+ void animationStep();\r
+\r
+ std::vector<std::string> getNames();\r
+ void getValues(float* values);\r
+\r
+ std::string getTitle();\r
+\r
+ private:\r
+ void runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath);\r
\r
- VariateurF variateurAnimation;\r
- DomaineMath* ptrDomaineMathInit;\r
+ const int n;\r
\r
- // Outputs\r
- const string title;\r
+ float z_r, z_i;\r
+ VariateurF variateurAnimationI; // Variateur pour z_i.\r
+ VariateurF variateurAnimationR; // Variateur pour z_r.\r
};\r
\r
#endif\r