50#include "ramCanvas.hpp"
54 std::chrono::time_point<std::chrono::system_clock> startTime = std::chrono::system_clock::now();
55 const int BSIZ = 7680/2;
56 const int SGSIZ = 400;
57 const double SGWID = 1.0;
58 const int MXITR = 1000;
59 const int DRTHS = 100;
60 const double U = .995;
62 mjr::ramCanvas1c16b theRamCanvas(BSIZ, BSIZ, -6.0, 7.0, -2.0, 10.0);
63 for(
int xsi=0; xsi<SGSIZ; xsi++) {
64 for(
int ysi=0; ysi<SGSIZ; ysi++) {
65 decltype(theRamCanvas)::coordFltType xn = -SGWID/2 + xsi*SGWID/(SGSIZ-1);
66 decltype(theRamCanvas)::coordFltType yn = -SGWID/2 + ysi*SGWID/(SGSIZ-1);
67 for(uint64_t i=0;i<MXITR;i++) {
68 decltype(theRamCanvas)::coordFltType tmp1 = 0.4 - 6.0 / (1.0+xn*xn+yn*yn);
69 decltype(theRamCanvas)::coordFltType tmp2 = 1.0 + U * (xn * std::cos(tmp1) - yn*std::sin(tmp1));
70 yn = U * (xn * std::sin(tmp1) + yn*std::cos(tmp1));
73 theRamCanvas.incPxChan(xn, yn);
77 theRamCanvas.autoHistStrech();
78 theRamCanvas.applyHomoPixTfrm(&
decltype(theRamCanvas)::colorType::tfrmPow, 1/5.0);
79 theRamCanvas.writeTIFFfile(
"ikeda_attractor.tiff",
80 mjr::ramCanvasPixelFilter::ColorSchemeOnChan<
decltype(theRamCanvas),
82 mjr::color3c8b::csCColdeFireRamp>(theRamCanvas));
83 std::chrono::duration<double> runTime = std::chrono::system_clock::now() - startTime;
84 std::cout <<
"Total Runtime " << runTime.count() <<
" sec" << std::endl;
int main(int argc, char *argv[])