home *** CD-ROM | disk | FTP | other *** search
/ Chip Hitware 8 / Chip_Hitware_Vol_08.iso / chiphit8 / multmedi / 95iterat / _setup.1 / Genesis.cpp < prev    next >
C/C++ Source or Header  |  1997-01-25  |  23KB  |  1,043 lines

  1. // genesis.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "itriazon.h"
  6. #include "itriadoc.h"
  7. #include "itriavw.h"
  8. #include "nthorder.h"
  9. #include "math.h"
  10.  
  11. #ifdef _DEBUG
  12. #undef THIS_FILE
  13. static char BASED_CODE THIS_FILE[] = __FILE__;
  14. #endif
  15.  
  16. //////////////////////////////////////////////////////////
  17. // CIterationsView meessage handlers
  18. // Equations converted over from the Genesis1.for software
  19. //////////////////////////////////////////////////////////
  20.  
  21. void CIterationsView::Genesis()
  22. {
  23.     switch (nDistortion)
  24.     {
  25.         case 101:
  26.             // Generalized Mandelbrot
  27.             // cn = cmplx (cr,ci);
  28.              // Jaenisch method for generalized mandelbrot
  29.  
  30. //            x1 = x = cx;
  31. //            y1 = y = cy;
  32. //            k1 = 0;
  33. //                
  34. //            // 1st pass
  35. //            for (k = 0 ; k < NMAX ; k++)
  36. //            {
  37. //                if (x == 0 && y == 0) 
  38. //                {
  39. //                    k1 = 0;
  40. //                    goto C12_0;
  41. //                }               
  42. //
  43. //                t4 = logl(x*x + y*y);
  44. //                ri = rorder_i*atan2l(y,x);
  45. //                rr = rorder_r*atan2l(y,x);
  46. //                rt = rorder_i*t4/2.0;
  47. //                ex = expl(rorder_r*t4/2.0 - ri);  // try (rt - ri) for a new fractal type
  48. //                x1 = ex * cosl(rt + rr) + cx;
  49. //                y1 = ex * sinl(rt + rr) + cy;
  50. //        
  51. //                r = x1 * x1 + y1 * y1;
  52. //                k++;
  53. //                if (r > dBailout)
  54. //                {
  55. //                    k1 = k;
  56. //                    b_GT4 = TRUE;
  57. //                     goto C12_0;
  58. //                }
  59. //                x = x1;
  60. //                y = y1;
  61. //            }
  62. //
  63. //            b_MAX = TRUE;
  64. //
  65. //            x1 = x = cx;
  66. //            y1 = y = cy;
  67. //            k1 = 0;
  68. //                
  69. //            // 2nd pass
  70. //            for (k = 0 ; k < NMAX ; k++)
  71. //            {
  72. //                if (x == 0 && y == 0) 
  73. //                {
  74. //                    k1 = 0;
  75. //                    //AfxMessageBox("going to c12_2");
  76. //                    goto C12_2;
  77. //                }               
  78. //
  79. //                t4 = logl(x*x + y*y);
  80. //                ri = rorder_i*atan2l(y,x);
  81. //                rr = rorder_r*atan2l(y,x);
  82. //                rt = rorder_i*t4/2.0;
  83. //                ex = expl(rorder_r*t4/2.0 - ri);  // try (rt - ri) for a new fractal type
  84. //                x1 = ex * cosl(rt + rr) + cx;
  85. //                y1 = ex * sinl(rt + rr) + cy;
  86. //
  87. //                //r = x1*x1 + y1*y1;    // This also works
  88. //
  89. //                if (x1 < 0) x = -(log10l(fabsl(x1)));
  90. //                else if (x1 > 0) x = log10l(fabsl(x1));
  91. //                else xx = 0L;
  92. //                    
  93. //                if (y1 < 0) y = -(log10l(fabsl(y1)));
  94. //                else if (y1 > 0) y = log10l(fabsl(y1));
  95. //                else yy = 0L;
  96. //
  97. //                r = x*x + y*y;    // This also works
  98. //                
  99. //                if (k == 0) { k1 = 1; rz = r; }
  100. //                else if (k == 1)
  101. //                {
  102. //                    if (r > rz) rzflag = 1;
  103. //                    else rzflag = -1;
  104. //                    rz = r;
  105. //                }
  106. //                else
  107. //                {
  108. //                    if (r > rz && rzflag != 1)
  109. //                    {
  110. //                        k1++;
  111. //                        rzflag = 1;
  112. //                    }
  113. //                    else 
  114. //                    if (r < rz && rzflag != -1)
  115. //                    {
  116. //                        k1++;
  117. //                        rzflag = -1;
  118. //                    }
  119. //                    rz = r;
  120. //                }
  121. //                C12_2:;
  122. //            }            
  123. //                     
  124. //            C12_0:
  125. //
  126. //            xsquared = x1*x1;
  127. //            ysquared = y1*y1;
  128. //
  129. //            if (k1 >= NMAX) 
  130. //                b_MAX = TRUE;
  131. //            else
  132. //                b_MAX = FALSE;
  133. //
  134. //            i = k1 % NMAX;
  135. //
  136. //            if (i < 0 || i > NMAX)
  137. //            {     
  138. //                AfxMessageBox("error, i out of range");
  139. //                Row = 0;
  140. //            }  
  141. //                    
  142.  
  143.             // Generalized Mandelbrot 101
  144.             z1 = z;
  145.             z2 = cmplx(rorder_r, rorder_i);
  146.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  147.             {
  148.                 z=(z^z2) + c;
  149.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  150.             }
  151.  
  152.             if (i >= JMAX)
  153.             {
  154.                 // Inside
  155.                 z = z1;
  156.                 z2 = cmplx(rorder_r, rorder_i);
  157.                 b_MAX = TRUE;
  158.                 i = 0;
  159.                 jrw=0;
  160.                 JMAX=NMAX-2;
  161.                 while (i++ < JMAX)
  162.                 {
  163.                     //z=z*z + c;
  164.                     z=(z^z2) + c;
  165.  
  166.                     if (z.real() < 0)                z.set_real( -(log10(fabs(z.real()))));
  167.                     else if (z.real() > 0)    z.set_real(  log10(fabs(z.real())));
  168.                     else z.set_real(0);
  169.                     
  170.                     if (z.imag() < 0)                z.set_imag( -(log10(fabs(z.imag()))));
  171.                     else if (z.imag() > 0)    z.set_imag(  log10(fabs(z.imag())));
  172.                     else z.set_imag(0);
  173.                     
  174.                     r = z.squares();
  175.  
  176.                     if (i == 0) { k1 = 1; rz = r; }
  177.                     else if (i == 1)
  178.                     {
  179.                         if (r > rz) rzflag = 1;
  180.                         else rzflag = -1;
  181.                         rz = r;
  182.                     }
  183.                     else
  184.                     if (r > rz && rzflag != 1)
  185.                     {
  186.                         jrw+=nFF;
  187.                         rzflag = 1;
  188.                     }
  189.                     else 
  190.                     if (r < rz && rzflag != -1)
  191.                     {
  192.                         jrw+=nFF;
  193.                         rzflag = -1;
  194.                     }
  195.                     rz = r;
  196.                     if (nFilter) Delta_z(z.real(), z.imaginary());
  197.                 }
  198.                 if (nFilter) Filter_Complete();
  199.                 i = jrw % NMAX;
  200.             }                                
  201.             else
  202.                 if (nFilter) Filter_Complete();
  203.                 
  204.             break;
  205.  
  206.         case 102:
  207.             // Multi-Fract
  208.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  209.             {
  210.                 z = (z*z+c).csin();
  211.                 z = z*z+c;
  212.                 // if (nFilter) Delta_z(z.real(), z.imaginary());
  213.             }
  214.  
  215.             //z = z/i;
  216.             c = z/i;
  217.             z = cmplx(0, 0);
  218.             i = 0;
  219.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  220.             {
  221.                 z = z*z+c;
  222.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  223.             }
  224.             if (nFilter) Filter_Complete();
  225.             break;
  226.  
  227.         case 103:
  228.             z2 = cmplx(rorder_r,rorder_i);
  229.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  230.             {
  231.                 z = z+(((z*z)^z2)+c);
  232.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  233.             }
  234.             if (nFilter) Filter_Complete();
  235.             break;
  236.  
  237.         case 104:
  238.             t=c;
  239.             t3=t*t*t;
  240.             t2=t*t;
  241.             a=t2/t3;
  242.             b=a*a*a+(t2-cmplx(2,0))/t3;
  243.             aa3=a*a*a;
  244.  
  245.             if (jul == 0)
  246.                 z=-a;
  247.  
  248.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  249.             {
  250.                 z = z*z*z-aa3*z+b;
  251.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  252.             }
  253.             if (nFilter) Filter_Complete();
  254.             break;
  255.  
  256.         case 105:
  257.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  258.             {
  259.                 z = z.ccos() * (z*z+c);
  260.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  261.             }
  262.             if (nFilter) Filter_Complete();
  263.             break;
  264.  
  265.         case 106:
  266. //        for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  267. //            {
  268. //                z = (2*z.csin()) * (z*z+c);
  269. //                if (nFilter) Delta_z(z.real(), z.imaginary());
  270. //            }
  271. //            if (nFilter) Filter_Complete();
  272.  
  273.                 z1 = z;
  274.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  275.                 {
  276.                     z = (z*c).ccos()*c;
  277.                     if (nFilter) Delta_z(z.real(), z.imaginary());
  278.                 }
  279.  
  280.                 if (i >= JMAX)
  281.                 {
  282.                     // Inside
  283.                     z = z1;
  284.                     b_MAX = TRUE;
  285.                     i = 0;
  286.                     jrw=0;
  287.                     //while ( z.squares() < dBailout && i++ < NMAX-2)
  288.                     JMAX=NMAX-2;
  289.                     while (i++ < JMAX)
  290.                     {
  291.                         //z=z*z + c;
  292.                   //z = (z^3) + z*(c - 1) - c;
  293.                         z = (z*c).ccos()*c;
  294.  
  295.                         if (z.real() < 0)                z.set_real( -(log10(fabs(z.real()))));
  296.                         else if (z.real() > 0)    z.set_real(  log10(fabs(z.real())));
  297.                         else z.set_real(0);
  298.                     
  299.                         if (z.imag() < 0)                z.set_imag( -(log10(fabs(z.imag()))));
  300.                         else if (z.imag() > 0)    z.set_imag(  log10(fabs(z.imag())));
  301.                         else z.set_imag(0);
  302.                     
  303.                         r = z.squares();
  304.  
  305.                         if (i == 0) { k1 = 1; rz = r; }
  306.                         else if (i == 1)
  307.                         {
  308.                             if (r > rz) rzflag = 1;
  309.                             else rzflag = -1;
  310.                             rz = r;
  311.                         }
  312.                         else
  313.                         if (r > rz && rzflag != 1)
  314.                         {
  315.                             jrw+=nFF;
  316.                             rzflag = 1;
  317.                         }
  318.                         else 
  319.                         if (r < rz && rzflag != -1)
  320.                         {
  321.                             jrw+=nFF;
  322.                             rzflag = -1;
  323.                         }
  324.                         rz = r;
  325.                         if (nFilter) Delta_z(z.real(), z.imaginary());
  326.                     }
  327.                     if (nFilter) Filter_Complete();
  328.                     i = jrw % NMAX;
  329.                 }                                
  330.                 else
  331.                     if (nFilter) Filter_Complete();
  332.                 
  333.             break;
  334.  
  335.         case 107:  // CBAP  F(z) = Z^3 - 3*(A^2)*Z + B(MOD 2)
  336.             t=c;
  337.             t3=3*t;
  338.             t2=t*t;
  339.             a=(t2+1)/t3;
  340.             b=2*a*a*a+(t2-cmplx(2,0))/t3;
  341.             aa3=a*a*3;
  342.  
  343.             if (jul == 0)
  344.                 z=-a;
  345.  
  346.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  347.             {
  348.                 z = z*z*z-aa3*z+b;
  349.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  350.             }
  351.             if (nFilter) Filter_Complete();
  352.             break;
  353.  
  354.         case 108:     // CCAP
  355.             t=c;
  356.             a=t;
  357.             b=t+2*t*t*t;
  358.             aa3=a*a*3;
  359.  
  360.             if (jul == 0)
  361.                 z=-a;
  362.  
  363.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  364.             {
  365.                 z = z*z*z-aa3*z+b;
  366.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  367.             }
  368.             if (nFilter) Filter_Complete();
  369.             break;
  370.  
  371.         case 109:
  372.             t=c;
  373.             a=t;            
  374.             b=2*t*t*t-2*t;
  375.             aa3=a*a*3;
  376.             a2=a+a;
  377.  
  378.             if (jul == 0)
  379.                 z=-a;
  380.  
  381.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  382.             {
  383.                 z = z*z*z-aa3*z+b;
  384.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  385.             }
  386.             if (nFilter) Filter_Complete();
  387.             break;
  388.  
  389.         case 110:
  390.             a=c;
  391.             aa=a*a;
  392.             aa3=aa*3;
  393.             aaa2=aa*a*2;
  394.  
  395.             if (jul == 0)
  396.                 z=-a;
  397.  
  398.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  399.             {
  400.                 z = z*z*z-aa3*z+1+aaa2;
  401.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  402.             }
  403.             if (nFilter) Filter_Complete();
  404.             break;
  405.  
  406.         case 111:
  407.             for (j = 0 ; j < 2 ; j++)
  408.             {
  409.                 if (j)
  410.                     z = z^z.ccos();
  411.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  412.                 {
  413.                     z = z*z+c;
  414.                     if (nFilter) Delta_z(z.real(), z.imaginary());
  415.                 }
  416.             }
  417.             if (nFilter) Filter_Complete();
  418.             break;
  419.  
  420.         case 112:
  421.             for (j = 0 ; j < 2 ; j++)
  422.             {
  423.                 if (j)
  424.                     z = z^z.csin();
  425.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  426.                 {
  427.                     z = z*z+c;
  428.                     if (nFilter) Delta_z(z.real(), z.imaginary());
  429.                 }
  430.             }
  431.             if (nFilter) Filter_Complete();
  432.             break;
  433.  
  434.         case 113:
  435.             t1 = .02;
  436.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  437.             {
  438.                 //z = z-c;
  439.                 z = ((z*z).ccos()+c/(1+z)).ccos()+c;
  440.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  441.             }
  442.             if (nFilter) Filter_Complete();
  443.             break;
  444.  
  445.         case 114:
  446.             t1 = .02;
  447.         for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  448.             {
  449.                 //z = ((z.ccos()).ccos()).ccos()*z+c;
  450.                 z = z*z;
  451.                 z = tangent(z)+c;
  452.                 //z = tangent(z*z)+c;
  453.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  454.             }
  455.             if (nFilter) Filter_Complete();
  456.             break;
  457.  
  458.         case 115:
  459.           if (jul == 0)
  460.             {
  461.                 z.set_real(0);
  462.                 z.set_imag(0);
  463.             }
  464.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  465.             {
  466.                 z = (z^3) + z*(c-1) - c;
  467.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  468.             }
  469.             if (nFilter) Filter_Complete();
  470.             break;
  471.  
  472.         case 116:        // Sharon01 Star
  473.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  474.             {
  475.                 z = z*z*z*z+1/c; // Sharon01
  476.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  477.             }
  478.             if (nFilter) Filter_Complete();
  479.  
  480.             break;
  481.         
  482.         case 117:  // 02 Sharon's Space Probe            
  483.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  484.             {
  485.                 z = (z*z/2+c)*(z*z/2+c);
  486.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  487.             }
  488.             if (nFilter) Filter_Complete();
  489.  
  490.             break;
  491.         
  492.         case 118:        // Sharon03
  493.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  494.             {
  495.                 //z=(z*z*z*z)/(1+acos(z))+c;
  496.  
  497.                 z=(1/z*z-c)*(z*z*z*z+c);
  498.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  499.             }
  500.             if (nFilter) Filter_Complete();
  501.             break;
  502.  
  503.         case 119:        // Sharon04
  504.             for (i = 0; i < JMAX && z.squares() < (dBailout) ; i++)
  505.             {
  506.                 z=(z*z*z*z)/(1+z.csin())+c;
  507.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  508.             }
  509.             if (nFilter) Filter_Complete();
  510.             break;
  511.  
  512.         case 120:        // Sharon05
  513.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  514.             {
  515.                 //z = ((z*z+c)*(z*z+c))/2;                
  516.                 
  517.                 z = ((z*z*z*z+c)*(z+1/c));
  518.  
  519.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  520.             }
  521.             if (nFilter) Filter_Complete();
  522.             break;
  523.  
  524.         case 121:        // Sharon06
  525.             c = c+(c/pi);
  526.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  527.             {
  528.                 z = z*z*z*z+c;
  529.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  530.             }
  531.             if (nFilter) Filter_Complete();
  532.             break;
  533.  
  534.         case 122:        // Sharon07
  535.             c = 4*(c/2);
  536.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  537.             {
  538.                 z = z*z*z*z+c;
  539.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  540.             }
  541.             if (nFilter) Filter_Complete();
  542.             break;
  543.  
  544.         case 123:        // Sharon08
  545.             t = (c/2)^2;
  546.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  547.             {
  548.                 z = z*z*z*z+t+c;
  549.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  550.             }
  551.             if (nFilter) Filter_Complete();
  552.             break;
  553.  
  554.         case 124:        // Sharon09
  555.             t = (c/1.936)^2;
  556.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  557.             {
  558.                 z = z*z*z*z+t+c;
  559.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  560.             }
  561.             if (nFilter) Filter_Complete();
  562.             break;
  563.  
  564.         case 125:        // Sharon10
  565.             t = (c/1.993)^2;
  566.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  567.             {
  568.                 z = z*z*z*z+t+c;
  569.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  570.             }
  571.             if (nFilter) Filter_Complete();
  572.             break;
  573.  
  574.         case 126:        
  575.             for (i = 0; i < JMAX && z.squares() < dBailout*25 ; i++)
  576.             {
  577.                 z = (z*z/2)+c;
  578.                 z = z*z*z*z;
  579.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  580.             }
  581.             if (nFilter) Filter_Complete();
  582.             break;
  583.  
  584.         case 127:        // Sharon12
  585.             for (i = 0; i < JMAX && z.squares() < dBailout*25 ; i++)
  586.             {
  587.                 z = (z+z*z/2)+c;
  588.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  589.             }
  590.             if (nFilter) Filter_Complete();
  591.             break;
  592.  
  593.         case 128:
  594.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  595.             {
  596.                 z = (z^(c+2))+z*z+c;
  597.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  598.             }
  599.             if (nFilter) Filter_Complete();
  600.             break;
  601.  
  602.         case 129:
  603.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  604.             {
  605.                 z=(z^(c+4))+z*z*z*z+c;
  606.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  607.             }
  608.             if (nFilter) Filter_Complete();
  609.             break;
  610.  
  611.         case 130:
  612.             t=((z^2)/(2+z)^4);
  613.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  614.             {
  615.                 z=z*z*z*z*t+c;
  616.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  617.             }
  618.             if (nFilter) Filter_Complete();
  619.             break;
  620.  
  621.         case 131:
  622.             t=z^(z+2);
  623.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  624.             {
  625.                 z = z*z*z*z+t+c;
  626.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  627.             }
  628.             if (nFilter) Filter_Complete();
  629.             break;
  630.  
  631.         case 132:
  632.             t=z/2+z;
  633.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  634.             {
  635.                 z = z*z*z*z+t*c+c;
  636.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  637.             }
  638.             if (nFilter) Filter_Complete();
  639.  
  640.             break;
  641.  
  642.         case 133:
  643.             t=(1+c).csin();
  644.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  645.             {
  646.                 z = z*z*z*z/t+c;
  647.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  648.             }
  649.             if (nFilter) Filter_Complete();
  650.  
  651.             break;
  652.  
  653.         case 134:
  654.             temp=atan(fabs(c.real()/c.imag()));
  655.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  656.             {
  657.                 z = z*z*z*z+c/temp;
  658.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  659.             }
  660.             if (nFilter) Filter_Complete();
  661.  
  662.             break;
  663.  
  664.         case 135:
  665.             temp=atan(fabs(c.real()/c.imag()));
  666.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  667.             {
  668.                 z = z*z*z*z+c+temp/2;
  669.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  670.             }
  671.             if (nFilter) Filter_Complete();
  672.  
  673.             break;
  674.  
  675.         case 136:
  676.             temp=atan(fabs(c.real()/c.imag()));
  677.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  678.             {
  679.                 z = z*z*z*z+z*z*z+temp+c;
  680.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  681.             }
  682.             if (nFilter) Filter_Complete();
  683.  
  684.             break;
  685.  
  686.         case 137:
  687.             temp=atan(fabs(c.real()/c.imag()));
  688.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  689.             {
  690.                 z = z*z*z*z+temp/(c+z);
  691.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  692.             }
  693.             if (nFilter) Filter_Complete();
  694.  
  695.             break;
  696.  
  697.         case 138:
  698.             z2=cmplx(.5,0);
  699.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  700.             {
  701.                 z1=z;
  702.                 z=z*z-z2*z2+c;
  703.         z2=z1;
  704.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  705.             }
  706.             if (nFilter) Filter_Complete();
  707.                         
  708.             break;
  709.         
  710.         case 139:
  711.       z2=z;
  712.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  713.             {
  714.           z1=z;
  715.                 z=z*z*z*z-z2+c;
  716.             z2=z1;
  717.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  718.             }
  719.             if (nFilter) Filter_Complete();
  720.             break;
  721.  
  722.         case 140:
  723.       z2=z;
  724.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  725.             {
  726.         z1=z;
  727.                 z=z*z*z*z+z2+c;
  728.         z2=z1;
  729.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  730.             }
  731.             if (nFilter) Filter_Complete();
  732.             break;
  733.  
  734.         case 141:
  735.       z2=z;
  736.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  737.             {
  738.         z1=z;
  739.                 z=z*z*z*z+z2/2+c;
  740.         z2=z1;
  741.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  742.             }
  743.             if (nFilter) Filter_Complete();
  744.             break;
  745.  
  746.         case 142:
  747.       z2=z;     
  748.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  749.             {
  750.         z1=z;
  751.                 z=z*z*z*z+c.real()*z2/2+c.imag()*z2/2+c;
  752.         z2=z1;
  753.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  754.             }
  755.             if (nFilter) Filter_Complete();
  756.             break;
  757.  
  758.         case 143:
  759.       z2=z;    
  760.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  761.             {
  762.           z1=z;
  763.                 z=z*z*z*z+c.real()*c.imag()*z2/2+c;
  764.         z2=z1;
  765.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  766.             }
  767.             if (nFilter) Filter_Complete();
  768.             break;
  769.  
  770.         case 144:
  771.       z2=z;    
  772.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  773.             {
  774.         z1=z;
  775.                 z=z*z*z*z+c.real()+c.imag()*z2+c;
  776.         z2=z1;
  777.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  778.             }
  779.             if (nFilter) Filter_Complete();
  780.             break;
  781.  
  782.         case 145:
  783.       z2=z;    
  784.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  785.             {
  786.         z1=z;
  787.                 z=z*z*z*z+c.real()/c.imag()*z2+c;
  788.         z2=z1;
  789.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  790.             }
  791.             if (nFilter) Filter_Complete();
  792.             break;
  793.  
  794.         case 146:
  795.       z2=z;    
  796.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  797.             {
  798.         z1=z;
  799.                 z=z*z*z*z+4*z2*c;
  800.         z2=z1;
  801.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  802.             }
  803.             if (nFilter) Filter_Complete();
  804.             break;
  805.  
  806.         case 147:
  807.       z2=z;  
  808.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  809.             {
  810.         z1=z;
  811.                 z=z*z*z*z+4*z2*c+c;
  812.         z2=z1;
  813.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  814.             }
  815.             if (nFilter) Filter_Complete();
  816.             break;
  817.  
  818.         case 148:    // Quartet
  819.             z2 = z;
  820.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  821.             {
  822.                 z2    = z;
  823.                 z        = z*z*z*z+c;
  824.                 c        = z2;
  825.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  826.             }
  827.             if (nFilter) Filter_Complete();
  828.             break;
  829.  
  830.         case 149:
  831.             z2=cmplx(.5,0);
  832.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  833.             {
  834.                 z1=z;
  835.                 z=z*z*z*z-z2*c*z.real()+c+z.imag();
  836.         z2=z1;
  837.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  838.             }
  839.             if (nFilter) Filter_Complete();
  840.             break;
  841.  
  842.         case 150:
  843.             z2=cmplx(.5,0);
  844.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  845.             {
  846.                 z1=z;
  847.                 z=z*z*z*z-z2/2+c+z.real()*c+z.imag();;
  848.         z2=z1;
  849.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  850.             }
  851.             if (nFilter) Filter_Complete();
  852.             break;
  853. //////////////////////////////////////////////////////////////////////////////////
  854.         case 151:
  855.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  856.             {
  857.         z=(((1/z*1/c)*z*z*z*z)+c);
  858.         z=z*z*z*z;
  859.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  860.             }
  861.             if (nFilter) Filter_Complete();
  862.             break;
  863.  
  864.         case 152:    
  865.       z2=cmplx(0,0);
  866.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  867.             {
  868.                 z1=z;
  869.                 z=(z*z*z*z+c*z2+c);
  870.         z=z*z*z*z;
  871.         z2=z1;
  872.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  873.             }
  874.             if (nFilter) Filter_Complete();
  875.             break;
  876.  
  877.         case 153:
  878.             z2=z1;
  879.       t=c;
  880.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  881.             {
  882.                 z1=z;
  883.                 z=z.csin()+z*z*z*z+c;
  884.         c=t+z1-z;
  885.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  886.             }
  887.             if (nFilter) Filter_Complete();
  888.             break;
  889.  
  890.         case 154:
  891.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  892.             {
  893.         z=z*z*z/c+c;
  894.         z=z*z*z;        
  895.         if (nFilter) Delta_z(z.real(), z.imaginary());
  896.             }
  897.             if (nFilter) Filter_Complete();
  898.             break;
  899.  
  900.         case 155:    
  901.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  902.             {
  903.         z=z*z*z*z/(1+z)+c;
  904.         z=z*z*z*z;
  905.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  906.             }
  907.             if (nFilter) Filter_Complete();
  908.             break;
  909.  
  910.         case 156:    
  911.             //z2=z1;
  912.             for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  913.             {
  914.                 z1=z;
  915.         z=z*z*z*z/(1+z)+c;
  916.         c=z1;
  917.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  918.             }
  919.             if (nFilter) Filter_Complete();
  920.             break;
  921.  
  922.         case 157:    
  923.       z2=cmplx(0,0);
  924.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  925.             {
  926.                 z1=z;
  927.                 z=z*z*z-z2*z2*z2+c;
  928.         z2=z1;
  929.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  930.             }
  931.             if (nFilter) Filter_Complete();
  932.             break;
  933.  
  934.         case 158:    
  935.       z2=cmplx(0,0);
  936.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  937.             {
  938.                 z1=z;
  939.                 z=z*z*z*z-z2*z2*z2*z2+c;
  940.         z2=z1;
  941.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  942.             }
  943.             if (nFilter) Filter_Complete();
  944.             break;
  945.  
  946.         case 159:    
  947.       z2=cmplx(0,0);
  948.       t=c/2;
  949.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  950.             {
  951.                 z1=z;
  952.                 z=(z*z*z*z-z2*z2*z2*z2+c)*(z*z*z*z-z2*z2*z2*z2+c);
  953.         z2=z1;
  954.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  955.             }
  956.             if (nFilter) Filter_Complete();
  957.             break;
  958.  
  959.         case 160:    
  960.       z2=cmplx(0,0);
  961.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  962.             {
  963.                 z1=z;
  964.                 z=(z*z-z2*z2+c)*(z*z-z2*z2-c);
  965.         z2=z1;
  966.                 if (nFilter) Delta_z(z.real(), z.imaginary());
  967.             }
  968.             if (nFilter) Filter_Complete();
  969.             break;
  970.  
  971.         case 161:    
  972.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  973.             {
  974.         z=z*z+c;      
  975.         z=z*z*(.5+z)/(.5+c)+c;
  976.         if (nFilter) Delta_z(z.real(), z.imaginary());
  977.             }
  978.             if (nFilter) Filter_Complete();
  979.             break;
  980.  
  981.         case 162:    
  982.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  983.             {
  984.         z=z*z*z*z*(.5+z)/(.5+c)+c;
  985.         if (nFilter) Delta_z(z.real(), z.imaginary());
  986.             }
  987.             if (nFilter) Filter_Complete();
  988.             break;
  989.  
  990.         case 163:    
  991.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  992.             {
  993.         z=z*z*(cn+z)/(cn+z+c)+c;  
  994.         if (nFilter) Delta_z(z.real(), z.imaginary());
  995.             }
  996.             if (nFilter) Filter_Complete();
  997.             break;
  998.  
  999.         case 164:    
  1000.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  1001.             {
  1002.         z=z*z*z*z*(cn+z)/(z+c)+c; 
  1003.         if (nFilter) Delta_z(z.real(), z.imaginary());
  1004.             }
  1005.             if (nFilter) Filter_Complete();
  1006.             break;
  1007.  
  1008.         case 165:    
  1009.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  1010.             {
  1011.         z=z*z*z*z*(cn-z)/(cn+c)+c;   
  1012.         if (nFilter) Delta_z(z.real(), z.imaginary());
  1013.             }
  1014.             if (nFilter) Filter_Complete();
  1015.             break;
  1016.  
  1017.         case 166:    
  1018.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  1019.             {
  1020.         z=z*z*z*z*(cn-z)/(cn+c)+c;
  1021.         z=z*z*z*z;
  1022.         if (nFilter) Delta_z(z.real(), z.imaginary());
  1023.             }
  1024.             if (nFilter) Filter_Complete();
  1025.             break;
  1026.  
  1027.         case 167:    
  1028.       for (i = 0; i < JMAX && z.squares() < dBailout ; i++)
  1029.             {
  1030.         z1=z*z+c;
  1031.         z=z*z*z*z+c^z+c;        
  1032.         if (nFilter) Delta_z(z.real(), z.imaginary());
  1033.             }
  1034.             if (nFilter) Filter_Complete();
  1035.             break;
  1036.  
  1037.         default:
  1038.             AfxMessageBox("Genesis Fractals, shouldn't get here...");
  1039.             break;
  1040.     }
  1041. }
  1042.  
  1043.