69#include "ramCanvas.hpp"
70#include "MRMathSTR.hpp"
71#include "MRMathIVL.hpp"
75 std::chrono::time_point<std::chrono::system_clock> startTime = std::chrono::system_clock::now();
76 const int NUMFRM = 1000;
77 const int STPPF = 1000/1000;
78 const int IMXSIZ = 7680/4;
79 const int IMYSIZ = 7680/4;
80 const double tDelta = 0.00001*1000;
81 const double a = 10.0;
82 const double b = 28.0;
83 const double c = 8.0 / 3;
85 mjr::ramCanvas1c64F xcanvas(IMXSIZ, IMYSIZ);
86 mjr::ramCanvas1c64F ycanvas(IMXSIZ, IMYSIZ);
87 mjr::ramCanvas1c64F zcanvas(IMXSIZ, IMYSIZ);
89 mjr::ramCanvas3c8b pcolorCanvas(IMXSIZ, IMYSIZ, -20, 20, 20, 50);
90 pcolorCanvas.clrCanvasToBlack();
92 for(
int frame=0; frame<NUMFRM; frame++) {
93# pragma omp parallel for schedule(static,1)
94 for(
int yi=0;yi<pcolorCanvas.getNumPixY();yi++) {
95 for(
int xi=0;xi<pcolorCanvas.getNumPixX();xi++) {
97 for(
int step=0; step<STPPF; step++) {
99 x = pcolorCanvas.int2realX(xi);
101 z = pcolorCanvas.int2realY(yi);
103 x = xcanvas.getPxColorRefNC(xi, yi).getC0();
104 y = ycanvas.getPxColorRefNC(xi, yi).getC0();
105 z = zcanvas.getPxColorRefNC(xi, yi).getC0();
106 double xNew = x + a * (y - x) * tDelta;
107 double yNew = y + (x * (b - z) - y) * tDelta;
108 double zNew = z + (x * y - c * z) * tDelta;
113 xcanvas.drawPoint(xi, yi, x);
114 ycanvas.drawPoint(xi, yi, y);
115 zcanvas.drawPoint(xi, yi, z);
117 double r = mjr::math::ivl::wrapCO((x+20)/40, 1.0);
118 double g = mjr::math::ivl::wrapCO((y+20)/40, 1.0);
119 double b = mjr::math::ivl::wrapCO((z-20)/30, 1.0);
120 pcolorCanvas.getPxColorRefNC(xi, yi).setChansRGB_dbl(r, g, b);
123 pcolorCanvas.writeTIFFfile(
"lorenz_mM_" + mjr::math::str::fmt_int(frame, 4,
'0') +
".tiff");
125 std::cout <<
"FRAME(" << frame <<
"): " <<
"DONE" << std::endl;
127 std::chrono::duration<double> runTime = std::chrono::system_clock::now() - startTime;
128 std::cout <<
"Total Runtime " << runTime.count() <<
" sec" << std::endl;
int main(int argc, char *argv[])