35#include "ramCanvas.hpp"
38typedef mjr::ramCanvas3c8b rcT;
42 std::chrono::time_point<std::chrono::system_clock> startTime = std::chrono::system_clock::now();
43 constexpr int COLMAG = 25;
44 constexpr rcT::coordIntType IMGSIZ = 7680;
45 constexpr int MAXITR = 155;
46 constexpr rcT::coordFltType ZROEPS = 1.0e-5;
47 constexpr rcT::cplxFltType r1( 1.0, 0.0);
48 constexpr rcT::cplxFltType r2(-0.5, std::sin(2.0*std::numbers::pi/3.0));
49 constexpr rcT::cplxFltType r3(-0.5, -std::sin(2.0*std::numbers::pi/3.0));
50 constexpr rcT::cplxFltType r4(-1.0, 0.0);
51 constexpr rcT::cplxFltType r5( 0.5, std::sin(2.0*std::numbers::pi/3.0));
52 constexpr rcT::cplxFltType r6( 0.5, -std::sin(2.0*std::numbers::pi/3.0));
54 rcT theRamCanvas(IMGSIZ, IMGSIZ, -1.20, 1.20, -1.20, 1.20);
56# pragma omp parallel for schedule(static,1)
57 for(rcT::coordIntType y=0;y<theRamCanvas.getNumPixY();y++) {
58 for(rcT::coordIntType x=0;x<theRamCanvas.getNumPixX();x++) {
59 rcT::cplxFltType z = theRamCanvas.int2real(x, y);
60 for(
int count=0; count<MAXITR; count++) {
61 if(std::abs(z-r1) <= ZROEPS) {
62 theRamCanvas.drawPoint(x, y, rcT::colorType::csCCu0R::c(255-count*COLMAG));
break;
63 }
else if(std::abs(z-r2) <= ZROEPS) {
64 theRamCanvas.drawPoint(x, y, rcT::colorType::csCCu0G::c(255-count*COLMAG));
break;
65 }
else if(std::abs(z-r3) <= ZROEPS) {
66 theRamCanvas.drawPoint(x, y, rcT::colorType::csCCu0B::c(255-count*COLMAG));
break;
67 }
else if(std::abs(z-r4) <= ZROEPS) {
68 theRamCanvas.drawPoint(x, y, rcT::colorType::csCCu0M::c(255-count*COLMAG));
break;
69 }
else if(std::abs(z-r5) <= ZROEPS) {
70 theRamCanvas.drawPoint(x, y, rcT::colorType::csCCu0C::c(255-count*COLMAG));
break;
71 }
else if(std::abs(z-r6) <= ZROEPS) {
72 theRamCanvas.drawPoint(x, y, rcT::colorType::csCCu0Y::c(255-count*COLMAG));
break;
73 }
else if(std::abs(z) <= ZROEPS) {
76 rcT::cplxFltType tmp = pow(z, 5);
77 z = z-(tmp*z-1.0)/(6.0*tmp);
82 theRamCanvas.applyHomoPixTfrm(&rcT::colorType::tfrmLinearGreyLevelScale, 255.0 / 155, 0.0);
83 theRamCanvas.autoHistStrech();
84 theRamCanvas.writeTIFFfile(
"newton_z6.tiff");
85 std::chrono::duration<double> runTime = std::chrono::system_clock::now() - startTime;
86 std::cout <<
"Total Runtime " << runTime.count() <<
" sec" << std::endl;
int main(int argc, char *argv[])