+ private:\r
+ __device__\r
+ void initZ(float& z_r, float& z_i, float, float) const\r
+ {\r
+ z_r = 0.0;\r
+ z_i = 0.0;\r
+ }\r
+\r
+ __device__\r
+ void nextZ(float& z_r, float& z_i, float x, float y) const\r
+ {\r
+ // Z^2 + (x, iy) :\r
+ float z_r_tmp = pow(z_r, 2) - pow(z_i, 2);\r
+ z_i = 2 * z_r * z_i + y;\r
+ z_r = z_r_tmp + x;\r
+ }\r
+ };\r
+\r
+class FractalJuliaMath : public FractalMath\r
+ {\r
+ public:\r
+ /**\r
+ * n: le nombre maximum d'iterations afin de savoir si Zi diverge ou non.\r
+ */\r
+ __device__\r
+ FractalJuliaMath(int n, float c_r, float c_i)\r
+ : FractalMath(n), c_r(c_r), c_i(c_i)\r
+ {\r
+ }\r
+\r
+ private:\r
+ __device__\r
+ void initZ(float& z_r, float& z_i, float x, float y) const\r
+ {\r
+ z_r = x;\r
+ z_i = y;\r
+ }\r
+\r
+ __device__\r
+ void nextZ(float& z_r, float& z_i, float, float) const\r
+ {\r
+ // Z^2 + C :\r
+ float z_r_tmp = pow(z_r, 2) - pow(z_i, 2);\r
+ z_i = 2 * z_r * z_i + this->c_i;\r
+ z_r = z_r_tmp + this->c_r;\r
+ }\r
+\r
+ float c_r, c_i;\r
+ };\r
+\r
+#endif\r