43#include "ramCanvas.hpp"
45typedef mjr::ramCanvas3c8b rct;
49 std::chrono::time_point<std::chrono::system_clock> startTime = std::chrono::system_clock::now();
52 double ar =
static_cast<double>(width) /
static_cast<double>(height);
53 rct theRamCanvas(width, height, -1.2*ar, 1.2*ar, -1.1, 1.3);
54 const int NUMITR = 50;
55 rct::coordFltType RAD = 5000;
57# pragma omp parallel for schedule(static,1)
58 for(rct::coordIntType y=0; y<theRamCanvas.getNumPixY(); y++) {
59 for(rct::coordIntType x=0; x<theRamCanvas.getNumPixX(); x++) {
60 std::complex<rct::coordFltType> c (theRamCanvas.int2realX(x), theRamCanvas.int2realY(y));
61 std::complex<rct::coordFltType> z (0.0, 0.0);
63 while ((std::abs(z) < RAD) && (count < NUMITR)) {
64 rct::coordFltType r = std::abs(z);
65 rct::coordFltType t = 2.0 * std::abs(std::arg(z));
66 z = r * r * std::complex<rct::coordFltType>(std::cos(t), -std::sin(t)) + c;
70 theRamCanvas.drawPoint(x, y, rct::colorType::csCCfractal0RYBCW::c(
static_cast<rct::colorType::csIntType
>(count*20)));
73 theRamCanvas.writeTIFFfile(
"duck.tiff");
74 std::chrono::duration<double> runTime = std::chrono::system_clock::now() - startTime;
75 std::cout <<
"Total Runtime " << runTime.count() <<
" sec" << std::endl;
int main(int argc, char *argv[])