Commencement du labo Mandelbrot et Julia.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 02_Mandelbrot_Julia / moo / host / Fractal.cu
diff --git a/WCudaMSE/Student_Cuda_Image/src/cpp/core/02_Mandelbrot_Julia/moo/host/Fractal.cu b/WCudaMSE/Student_Cuda_Image/src/cpp/core/02_Mandelbrot_Julia/moo/host/Fractal.cu
new file mode 100755 (executable)
index 0000000..a92b86b
--- /dev/null
@@ -0,0 +1,129 @@
+#include <iostream>\r
+#include <assert.h>\r
+\r
+#include "Fractal.h"\r
+#include "Device.h"\r
+\r
+using std::cout;\r
+using std::endl;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Declaration                                     *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Imported                *|\r
+ \*-------------------------------------*/\r
+\r
+extern __global__ void fractal(uchar4* ptrDevPixels, int w, int h, DomaineMath domaineMath, int n, float t);\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Private                 *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Implementation                                  *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+/*-------------------------*\\r
+ |*    Constructeur        *|\r
+ \*-------------------------*/\r
+\r
+Fractal::Fractal(int w, int h, float dt, int n)\r
+    : w(w), h(h), n(n),\r
+      dg(8, 8, 1),\r
+      db(16, 16, 1),\r
+      t(0),\r
+      variateurAnimation(IntervalF(0, 2 * PI), dt),\r
+      ptrDomaineMathInit(new DomaineMath(-2, -1.3, 0.8, 1.3)),\r
+      title("Fractal Cuda")\r
+    {\r
+    assert(w == h);\r
+\r
+    //print(dg, db);\r
+    Device::assertDim(dg, db);\r
+    }\r
+\r
+Fractal::~Fractal()\r
+    {\r
+    delete this->ptrDomaineMathInit;\r
+    }\r
+\r
+/*-------------------------*\\r
+ |*    Methode             *|\r
+ \*-------------------------*/\r
+\r
+/**\r
+ * Override\r
+ */\r
+void Fractal::runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath)\r
+    {\r
+    fractal<<<dg,db>>>(ptrDevPixels, this->w, this->h, domaineMath, this->n, this->t);\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+void Fractal::animationStep()\r
+    {\r
+    this->t = this->variateurAnimation.varierAndGet();\r
+    }\r
+\r
+/*--------------*\\r
+ |*    get      *|\r
+ \*--------------*/\r
+\r
+\r
+/**\r
+ * Override\r
+ */\r
+int Fractal::getW()\r
+    {\r
+    return this->w;\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+int Fractal::getH()\r
+    {\r
+    return this->h;\r
+    }\r
+\r
+DomaineMath* Fractal::getDomaineMathInit()\r
+    {\r
+    return this->ptrDomaineMathInit;\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+float Fractal::getT()\r
+    {\r
+    return this->t;\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+string Fractal::getTitle()\r
+    {\r
+    return this->title;\r
+    }\r
+\r
+/*--------------------------------------*\\r
+ |*            Private                 *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    End                                             *|\r
+ \*---------------------------------------------------------------------*/\r
+\r