[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(a)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=(a)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=(a)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=(a)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=(a)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===========================