45#include "ramCanvas.hpp"
46#include "MRMathSTR.hpp"
49std::vector<std::array<mjr::ramCanvas1c16b::coordFltType, 5>> params {
51 { 0.432882, -1.570796, 10000000},
52 { 0.536566, 1.570796, 10000000},
53 { 0.690363, 0.995086, 10000000},
54 { 0.517835, 1.680190, 10000000},
55 { 0.565480, 1.062950, 10000000},
56 { 0.546562, 1.135860, 10000000},
57 { 0.456968, 1.837620, 10000000},
58 { 0.484075, 1.234150, 10000000},
59 { 0.491253, 1.127530, 10000000},
60 { 0.443006, 1.747070, 10000000},
61 { 0.490425, 1.223740, 10000000},
62 { 0.464411, 1.909230, 10000000},
63 { 0.486090, 1.139340, 10000000},
64 { 0.448678, 1.075730, 10000000},
65 { 0.465456, 1.154130, 10000000},
66 { 0.375753, 1.877880, 10000000},
67 { 0.351747, 1.345850, 10000000},
68 { 0.375383, 1.495300, 10000000},
69 { 0.378139, 1.323700, 10000000},
70 { 0.407792, 1.786880, 10000000},
71 { 0.381058, 1.749780, 10000000},
72 { 0.422341, 1.361320, 10000000},
73 { 0.720252, -1.100380, 10000000},
74 { 0.382110, -1.012590, 10000000},
75 { 0.404479, -1.626160, 10000000},
76 { 0.442941, -1.453160, 10000000},
77 { 0.458452, -1.380980, 10000000},
78 { 0.064952, -0.775113, 10000000},
79 { -0.068023, -0.802403, 10000000},
80 { 0.254331, -0.762604, 10000000},
81 { -0.223881, -0.714717, 10000000},
82 { -0.537199, -0.809482, 10000000},
83 { -0.528728, -0.864537, 10000000},
84 { -0.783708, -1.135120, 10000000},
85 { -0.629771, -0.964981, 10000000},
86 { -0.557026, -0.844882, 10000000},
87 { -0.501792, -0.675246, 10000000},
88 { 0.032832, -0.709609, 10000000},
89 { 0.519031, -1.436470, 10000000},
90 { 0.037161, 1.936070, 10000000},
95 std::chrono::time_point<std::chrono::system_clock> startTime = std::chrono::system_clock::now();
96 const int BSIZ = 7680/1;
98# pragma omp parallel for schedule(static,1)
99 for(
decltype(params.size()) j=0; j<params.size(); ++j) {
100 mjr::ramCanvas1c16b theRamCanvas(BSIZ, BSIZ, -1.0, 1.0, -1.0, 1.0);
101 decltype(theRamCanvas)::coordFltType a = params[j][0];
102 decltype(theRamCanvas)::coordFltType b = params[j][1];
103 uint64_t maxitr =
static_cast<uint64_t
>(params[j][2]);
105 decltype(theRamCanvas)::coordFltType xn = 0;
106 decltype(theRamCanvas)::coordFltType yn = 0;
107 for(uint64_t i=0;i<maxitr;i++) {
108 decltype(theRamCanvas)::coordFltType tmp = std::sin(xn*xn-yn*yn+a);
109 yn = std::cos(2*xn*yn+b);
112 decltype(theRamCanvas)::coordIntType ix = theRamCanvas.real2intX(xn);
113 decltype(theRamCanvas)::coordIntType iy = theRamCanvas.real2intY(yn);
114 if (theRamCanvas.isOnCanvas(ix, iy))
115 theRamCanvas.getPxColorRefNC(ix, iy).tfrmAdd(1);
117 if((i % 10000000) == 0)
119 std::cout <<
"ITER(" << j <<
"): " << i << std::endl;
121 theRamCanvas.autoHistStrech();
122 theRamCanvas.applyHomoPixTfrm(&
decltype(theRamCanvas)::colorType::tfrmPow, 1/4.0);
123 theRamCanvas.rotate90CW();
124 theRamCanvas.scaleDownMean(4);
125 theRamCanvas.autoHistStrech();
127 std::cout <<
"ITER(" << j <<
"): " <<
"DONE" << std::endl;
128 theRamCanvas.writeTIFFfile(
"simone_attractor_" + mjr::math::str::fmt_int(j, 2,
'0') +
".tiff",
129 mjr::ramCanvasPixelFilter::ColorSchemeOnChan<
decltype(theRamCanvas),
131 mjr::color3c8b::csCColdeFireRamp>(theRamCanvas));
134 std::chrono::duration<double> runTime = std::chrono::system_clock::now() - startTime;
135 std::cout <<
"Total Runtime " << runTime.count() <<
" sec" << std::endl;
int main(int argc, char *argv[])