Polymorphic Julia Sets and the Spacebar Toggle
[note: repost; on checking the archive and finding it absent, again I suspect that my post of last night was not received] "Gerald K. Dobiasovsky" <gerald.dob@aon.at> wrote:
Hiram Berry wrote:
But how is the "cursor position" variable communicated to the program? I see how one may use an IF/ELSE to take differing execution
paths
in the generation of the fractal, but for it to work the cursor position from before the toggle must be known after the toggle. How is that done? I have an inkling that the cursor position might be put into the parameter p1
That's exactly how it works.
Fract200.par and fract200.frm (both distributed with Fractint) are the files to look into. There are two example image pars "image_demo_julia" and "image_demo_mandel" calling an example formula contained in the formula file.
Thankyou Gerald, for confirming this. On the strength of that, I went ahead and altered the "bimandeloid" formula (generalized z->z^A+k*z^B+C iteration) to enable space bar toggling to the Julia set corresponding to the cursor position. In the midst of doing so it occurred to me that the meaning of what a corresponding Julia set meant could be interpreted in more than one way. As I understand it we make the "C" part of the iterator constant and then vary over the screen the initial z value in order to generate the Julia sets, but it seems to me the choice of the z_init parameter for screen variation is somewhat arbitrary: it is after all just one of several reasonable parameters that could be variable in the generating formula. I use the term "k" in the bimandeloid formula rather than separate coefficients on each of the terms because as I showed in a reply to Jim Muth earlier, a simple change of variable allows one to normalize the leading coefficient and get a fractal that is geometrically similar to the first one-- which I consider the same fractal. So, the coefficient "k" would seem an obvious choice to vary across the screen instead of z_init. The other one I thought reasonable was to vary the exponents A and B; since they are both real the form A+Bi suggests itself for the screen. Now its necessary to communicate which type of Julia set is to be toggled from the bimandeloid main set, so I do this as a flag in the real part of parameter p5 in the formula: 0=usual sort of Julia set, of z_int, 1= k-variant Julia set, 2= power Julia. The nice thing about these is that one may toggle into the first type of Julia from the bimandeloid, then use the z-screen to go to the other types without changing the C-value put into p1 by the toggle. These alternative Julia sets are very interesting! The k-variant one looks much like a hybrid between Mandelbrot and Julia sets, though the Mset parts look complete (not with the eroded surface of perturbed sets), while the power Julia set looks _very_ different from what we usually think of as Julia sets, with areas of connected smooth disks and areas of almost random chaos. In any event, here are some results in case anyone cares to have a look at this system of multiple types of Julia set. Regards, Hiram ==================.pars using bimandeloid formula BEGIN================== Bimandeloid_Main { ; A Biomandeloid-- the main M-set like view of the set ; generated by z->z^4+(0-1.5i)*z^7+C. Note the trilateral ; only symmetry (not bilaterally symmetrical on the arms). ; Decided by real(p5),<sp>toggles goes to 1 of 3 Julias. ; Fractint Version 2003 Patchlevel 1 reset=2003 type=formula formulafile=exprmntl.frm formulaname=bimandeloid3 ismand=y passes=1 center-mag=0/0/0.6666667 params=0/0/4/7/0/-1.5/400/4/0/0 float=y maxiter=10000 inside=0; colors=@speccyc1.map colors=000zV0<6>yi0yk0xn0<2>xt0ww0vw1<9>exKcyLayN`yPZyRXyT<17>WyoWypWyq<\ 2>WyuVzwWww<8>lOwmKwoGw<3>w0w<9>e0kc0ja0h<2>W0eU0cU0c<118>TQTTQTTRT<3>SS\ S000000zzzc00<6>n00o00p00<3>w00<8>mGAlIBjJC<3>eRHdTIfTG<8>xU2 } BimandeloidJulia1 { ; The usually defined Julia set from a cursor point in the ; Bimandeloid z->z^4 + (0-1.5i)*z^7 + C (varies the ; initial z value as screen position). Generated by the ; space bar screen toggle from the bimandeloid. ; Fractint Version 2003 Patchlevel 1 reset=2003 type=formula formulafile=exprmntl.frm formulaname=bimandeloid3 ismand=n passes=1 center-mag=0.0194201/-0.0147727/0.9576667/1/90/-1.23373533611470521e-014 params=-0.1505376344086022/0.8663624511082139/4/7/0/-1.5/400/4/0/0 float=y maxiter=10000 inside=0 colors=000zV0<6>yi0yk0xn0<2>xt0ww0vw1<9>exKcyLayN`yPZyRXyT<17>WyoWypWyq<\ 2>WyuVzwWww<8>lOwmKwoGw<3>w0w<9>e0kc0ja0h<2>W0eU0cU0c<118>TQTTQTTRT<3>SS\ S000000zzzc00<6>n00o00p00<3>w00<8>mGAlIBjJC<3>eRHdTIfTG<8>xU2 } BimandeloidJulia2 { ; A "k-variant" Julia set from a cursor point in the ; Bimandeloid z->z^4 + (0-1.5i)*z^7 + C (ie. the -1.5i ; term is no longer constant, but varies with screen pos) ; Fractint Version 2003 Patchlevel 1 reset=2003 type=formula formulafile=exprmntl.frm formulaname=Bimandeloid3 ismand=n passes=1 center-mag=0.51448/-2.17995/0.3370987/1/90/3.88578058618804789e-016 params=-0.1505376344086022/0.8663624511082139/4/7/0/-1.5/400/4/1/0 float=y maxiter=10000 inside=0; colors=@spectrum.map colors=000zzzc00<7>o00p00r00s00u00w00<9>lIBjJCiLD<3>dTI<4>nTApU8rU7<2>xU\ 2zV0zX0<5>yi0yk0xn0<2>xt0ww0vw1<8>fxIexKcyL<2>ZyRXyTXyU<16>WyoWypWyq<2>W\ yuVzwWww<8>lOwmKwoGw<3>w0w<9>e0kc0ja0h<2>W0eU0cU0c<118>TQTTQTTRT<3>SSS00\ 0000 } BimandeloidJulia3 { ; The third type "Power Julia" set from a cursor point in ; Bimandeloid z->z^4 + (0-1.5i)*z^7 + C (the exponents ; 4 and 7 are replaced by real,imag screen position) ; Fractint Version 2003 Patchlevel 1 reset=2003 type=formula formulafile=exprmntl.frm formulaname=Bimandeloid3 ismand=n passes=1 center-mag=0.0194201/15.5171/0.02551012/1/90/-1.23373533611470521e-014 params=-0.1505376344086022/0.8663624511082139/4/7/0/-1.5/400/4/2/0 float=y maxiter=10000 inside=0; colors=@PwrJulia.map colors=000DQA8R8<3>a6ji0tj7t<3>n_wofxpmyruznpzijy<3>knhlpdlq`<3>ovJ<4>T_\ VOWXJR_<3>08i<3>HEaMF_QHY<3>gNQYSZ<3>fiQimOkrMnwJ<6>q_RqXSrTU<3>tFZ<7>tS\ PtUNtWM<2>t`IubGubTuaev`s<4>oSYmQTlOP<2>gIBeG6eI6<5>dW8dY9d_9<2>dfAciBdf\ B<3>hU8iR7jO7kL6mH5cIFUJP000zzzc00<7>o00p00r00s00u00w00<9>lIBjJCiLD<3>dT\ I<4>nTApU8rU7<2>xU2zV0zX0<5>yi0yk0xn0<2>xt0ww0vw1<8>fxIexKcyL<2>ZyRXyTXy\ U<16>WyoWypWyq<2>WyuVzwWww<3>cgwebvgXtiRslLqoRWsYA<3>SMNLJQEGT6CX<2>lkMs\ PWz2f<3>X3HQ3AI43<4>_PJ<3>IQC } BimandeloidJ_Insid { ; A Julia set generated by space-bar toggling a point in ; the generator Mset of z->z^4+(0-1.5i)*z^7+C. The point ; was just on the inside of the set-- the relation of ; inside pt(M)->connected(J) seems to hold for Bimandeloid ; Fractint Version 2003 Patchlevel 1 reset=2003 type=formula formulafile=exprmntl.frm formulaname=bimandeloid3 ismand=n passes=1 center-mag=0/0/0.6666667 params=-0.6666666666666666/0.1779661016949153/4/7/0/-1.5/400/4/0/0 float=y maxiter=10000 inside=0; colors=@speccyc1.map colors=000zV0<6>yi0yk0xn0<2>xt0ww0vw1<9>exKcyLayN`yPZyRXyT<17>WyoWypWyq<\ 2>WyuVzwWww<8>lOwmKwoGw<3>w0w<9>e0kc0ja0h<2>W0eU0cU0c<118>TQTTQTTRT<3>SS\ S000000zzzc00<6>n00o00p00<3>w00<8>mGAlIBjJC<3>eRHdTIfTG<8>xU2 } BimandeloidJ_Power { ; Part of the Power Julia from the same C point as ; BimandeloidJ_Insid. Black is _inside_ color. ; ; ; Fractint Version 2003 Patchlevel 1 reset=2003 type=formula formulafile=exprmntl.frm formulaname=bimandeloid3 ismand=n passes=1 center-mag=-2.39484/-0.818481/1.253133/1/4.99999999999999822/-5.05012698\ 326368081e-014 params=-0.6666666666666666/0.1779661016949153/4/7/0/-1.5/400/4/2/0 float=y maxiter=10000 inside=0 colors=000zzzc00d00f00tw3<3>m00<3>s00u00w00<9>lIBjJCiLD<3>dTI<4>nTApU8rU\ 7<2>xU2zV0zX0<5>yi0yk0xn0<2>xt0ww0vw1tw3w00qw7<5>fxIexKcyL<2>ZyRXyTXyU<1\ 6>WyoWypWyq<2>WyuVzwWww<8>lOwmKwoGw<3>w0w<9>e0kc0ja0h<2>W0eU0cU0c<118>TQ\ TTQTTRT<3>SSS000000 } =================END .pars===================================== ===============Toggling bimandeloid .frm BEGIN=========================== Bimandeloid3{ ; toggles with 3 different kinds of corresponding Julia sets ; generator z->z^A+k*z^B+C, main screen varies C, first Julia varies z_init ; second Julia varies k, third Julia varies exponents as A+Bi. ; Flag Jf: 0=first Julia type, 1=second Julia type, 2=third Julia type ; p2=(A,B)[reals],p3=k[complex],p4=(bailout-4,#critical points),p5=(Jf,0) ; Main screen and second Julia type start iterations on critical points IF(isinit==0) ; image-wide initialization section isinit = 1 maxit = maxit ; forces fp Jf = real(p5) IF( ismand || Jf!=2 ) ; cases where A,B constant A = real(p2), B = imag(p2) ENDIF Jf = real(p5) IF( ismand || Jf==0 || Jf==2 ) ; cases where k is constant k = p3 ENDIF bailout = real(p4) + 4 IF( ismand || Jf==1 ) ; case where critical points used cps = trunc(imag(p4)) IF(cps<=0) ; give a default value for entry of 0 cps = 1 + ceil(abs(A - B) ) ; works for integers only ENDIF diff = (A - B), angle = 2 * pi / diff rotfactor = cos(angle) + flip(sin(angle)) IF(ismand) ; case where cps are constant over screen principal = (-B * k / A) ^ (1/diff) ENDIF ENDIF ENDIF IF(ismand) C = pixel ; Mandelbrot-like type ELSE ; initialize C and variable non-z for Julias C = p1 ; one of Julia-like types IF( Jf==1 ) ; Julia type which screen-varies k k = pixel principal = (-B * k / A) ^ (1/diff) ELSEIF( Jf==2 ) ; Julia type which screen-varies A,B A = real(pixel), B = imag(pixel) ENDIF ENDIF IF( ismand || Jf==1 ) ; initialize z for cases which use cps z = currcp = 0, cpctr = 1 ; first critical point is z = 0 isdiv = isalldiv = 0 ; flags for current cp and all cps divergence ELSEIF( Jf==0) ; case which screen-varies z_init z = pixel ELSE ; otherwise start z at 0 z = 0 ENDIF : IF( ismand || Jf==1 ) ; cases that use cps IF(isdiv) ; last critical point diverged cpctr = cpctr + 1 IF(cpctr > cps) ; finished, with all cps diverging isalldiv = 1 ELSEIF(cpctr == 2) ; second cp is the principal value z = currcp = principal, isdiv = 0 ELSE ; rotate the last cp by angle on the complex plane currcp = currcp * rotfactor z = currcp, isdiv = 0 ENDIF ENDIF IF(isalldiv != 1) z = z^A + k*z^B + C ; main iteration isdiv = ( |z| > bailout) ENDIF ELSE ; cases that do not use cps z = z^A + k*z^B + C ; main iteration isalldiv = ( |z| > bailout) ENDIF isalldiv == 0 } ================END .frm===========================
participants (1)
-
Hiram Berry