40#include "ramCanvas.hpp"
41#include "MRMathSTR.hpp"
45 std::chrono::time_point<std::chrono::system_clock> startTime = std::chrono::system_clock::now();
46 std::cout <<
"apomorph start" << std::endl;
47 const int CSIZE = 2160;
48 const int ITRTOSS = 1000;
49 const long NUMITR = 400000000;
51 mjr::ramCanvas3c8b theRamCanvas(CSIZE, CSIZE, -4.0, 4.0, -4.0, 4.0);
52 theRamCanvas.setDrawMode(mjr::ramCanvas3c8b::drawModeType::ADDCLAMP);
54 mjr::ramCanvas3c8b::colorType aColor[] = { mjr::ramCanvas3c8b::colorType(1, 0, 0), mjr::ramCanvas3c8b::colorType(0, 1, 0), mjr::ramCanvas3c8b::colorType(0, 0, 1) };
56 std::random_device rd;
57 std::minstd_rand0 rEng(rd());
59 const double s = 1.73205080757;
61 const std::complex<double> si(0.0, s);
62 const std::complex<double> c1 = (1.0+s)/(2.0+s);
63 const std::complex<double> c2 = 0.5*(si-1.0);
64 const std::complex<double> c3 = -0.5*(si+1.0);
65 const std::complex<double> c4 = 1.0+s;
66 for(
int frame=1; frame<401; frame++) {
67 theRamCanvas.clrCanvasToBlack();
68 std::complex<double> c5(3.0, (frame-1)*0.0025);
69 std::cout <<
"apomorph frame: " << frame <<
" " << (frame-1)*0.0025 << std::endl;
70 std::complex<double> z(0.1, 0.2);
71 for (
long n=0;n<NUMITR;n++) {
72 std::complex<double> zNxt;
73 if ((n % (NUMITR/100)) == 0) {
74 if ((n % (NUMITR/10)) == 0)
75 std::cout <<
"|" << std::flush;
77 std::cout <<
"." << std::flush;
79 std::complex<double> f = c5/(c4-z)-c1;
80 std::minstd_rand0::result_type rn = rEng()%3;
91 theRamCanvas.drawPoint(z, aColor[rn]);
93 std::cout <<
"|" << std::endl;
94 std::cout <<
"apomorph dump" << std::endl;
95 theRamCanvas.applyHomoPixTfrm(&mjr::ramCanvas3c8b::colorType::tfrmStdPow, 1/5.0);
97 theRamCanvas.writeTIFFfile(
"apomorph_" + mjr::math::str::fmt_int(frame, 3,
'0') +
".tiff");
98 std::cout <<
"apomorph finish" << std::endl;
100 std::chrono::duration<double> runTime = std::chrono::system_clock::now() - startTime;
101 std::cout <<
"Total Runtime " << runTime.count() <<
" sec" << std::endl;
int main(int argc, char *argv[])