44#include "ramCanvas.hpp"
46typedef mjr::ramCanvas1c16b rcct;
47typedef mjr::ramCanvas3c8b rcrt;
51 std::chrono::time_point<std::chrono::system_clock> startTime = std::chrono::system_clock::now();
53 const int CSIZE = 1024*2*SCALE;
54 const int MAXITR = 256*4;
55 rcct inhRamCanvas (CSIZE, CSIZE, -2.0, 1.0, -1.5, 1.5);
56 rcct outhRamCanvas(CSIZE, CSIZE, -2.0, 1.0, -1.5, 1.5);
57 rcct distRamCanvas(CSIZE, CSIZE, -2.0, 1.0, -1.5, 1.5);
58 std::complex<double>* theOrbit =
new std::complex<rcct::coordFltType>[MAXITR+1];
60 for(rcct::coordIntType y=0;y<inhRamCanvas.getNumPixY();y++) {
61 if((y%(inhRamCanvas.getNumPixY()/16))==0)
62 std::cout <<
"LINE: " << y <<
"/" << inhRamCanvas.getNumPixY() << std::endl;
63 for(rcct::coordIntType x=0;x<inhRamCanvas.getNumPixX();x++) {
64 std::complex<rcct::coordFltType> c(inhRamCanvas.int2realX(x), inhRamCanvas.int2realY(y));
65 std::complex<rcct::coordFltType> z(c);
66 for(rcct::colorChanType count=0; ; count++) {
70 for(rcct::colorChanType i=0; i<=count; i++) {
71 outhRamCanvas.incPxChan(theOrbit[i]);
72 distRamCanvas.tformPixel(theOrbit[i], [i](
auto& c) { c.tfrmMax(i); });
75 }
else if(count>=(MAXITR-1)) {
76 for(rcct::colorChanType i=0; i<=count; i++)
77 inhRamCanvas.incPxChan(theOrbit[i]);
85 distRamCanvas.scaleDownMean(SCALE);
86 distRamCanvas.autoHistStrech();
87 distRamCanvas.rotate90CW();
88 distRamCanvas.writeTIFFfile(
"mandelbrot_orbits_dst_h.tiff");
89 outhRamCanvas.scaleDownMean(SCALE);
90 outhRamCanvas.autoHistStrech();
91 outhRamCanvas.rotate90CW();
92 outhRamCanvas.writeTIFFfile(
"mandelbrot_orbits_out_h.tiff");
93 inhRamCanvas.scaleDownMean(SCALE);
94 inhRamCanvas.autoHistStrech();
95 inhRamCanvas.rotate90CW();
96 inhRamCanvas.writeTIFFfile(
"mandelbrot_orbits_in_h.tiff");
99 rcrt theRamCanvas(distRamCanvas.getNumPixX(), distRamCanvas.getNumPixY());
100 theRamCanvas.colorizeIntCanvas([&distRamCanvas, &outhRamCanvas, &inhRamCanvas](
auto x,
auto y) {
return rcrt::colorType(
static_cast<rcrt::colorChanType
>(distRamCanvas.getPxColor(x, y).tfrmPow(0.8).getChan(0)/256),
101 static_cast<rcrt::colorChanType
>(outhRamCanvas.getPxColor(x, y).tfrmPow(0.6).getChan(0)/256),
102 static_cast<rcrt::colorChanType
>( inhRamCanvas.getPxColor(x, y).tfrmPow(0.8).getChan(0)/256)); });
104 theRamCanvas.writeTIFFfile(
"mandelbrot_orbits_color.tiff");
106 std::chrono::duration<double> runTime = std::chrono::system_clock::now() - startTime;
107 std::cout <<
"Total Runtime " << runTime.count() <<
" sec" << std::endl;
int main(int argc, char *argv[])