Hi,
i dont intend to push anyone "to extend the limits", but what good is a
composition tool if it isïnt used as such? It would be sad, if the only
reason is that the inputs are not clear. Also Iïm not an artist and
definetly there is much more to it than I can explore.
First some remarks about the basic structure as John suggested.
The main loop consists of 3 parts, the iteration loop, the part defined
by the variable "wo" and the part defined by the variable "start".
The iteration loop checks if "VB"is set, which means one of the 2 hybrid
frms is to be used, if "zero" one of the 2 basic frms is used. The "d3"
variable checks if it is a Julia (1) or a mandel-type (0).In case of the
hybrid frms it`s the hybrid Julia, otherwise many_mods. If "vb" is zero itïs
one of the 2 basic frms, but as Julia. The default basic frm, just like the
hybrid Julia gets more complexity by use of the warp-factor "u". The "ab"
variable determins which one of the 2 basic frms is to be used.
The "wo" part supplies the initial value to warp the basic shape if it is
checked. When the border or maxiter values are reached, iteration restarts
from zero but warped. The difference can easily be checked with the speed
test image.
The "start" variable determines if one or two in/out options are used.
If zero, only the main loop and the "wo" part (if checked) is active.
If "1", only in/out2 options are active. It is counted down from 2 to zero,
so that finally, at high iteration, only the iteration loop is used.
Regard the border and maxiter values as imaginary bailout points where
the iteration switches to the next selected frm. The warpeffect like
it says somehow bends the look of the next iteration part, how - depends
on the type. The internal counter "t" of the previous part(s) is used for
itïs calculation. It needs outside=tdis and a colourmap which supports
"3d"looks. BUD2.map is my favorite as it supports "3d" in 3 basic colors.
To create a new image from the scratch firstly you decide which basic
frm (I call it shape) to use. There are 6 options, the 4 frms and the
Julia variation of the 2 basic frms. Ismand has the precedence, so if
frm3 (many_mods) is checked and Ismand is "no" the hybrid julia (4) is used.
To start off you use the real(p5) 1digit input, 1 to 4. Set image(p5)
to 5 if you want to warp it. Having done that you add the other 4 digits,
in the following order: (shape), out1, out2, in1, in2. Of course the outside
options are used also for the inside parts and vv, if the conditions are
met.
Now the explanation of the inputs in their order:
P1 is the Julia seed, it is used for all julia variations and it is shared
by the basic frm1. Get the values using the evolver or take them from
any other image.
Real (p2) factor1, is used for the shape-warpeffect. Set it to maxiter1 or
higher. A good example is one third above. After the dot the border1 input.
Select the value and divide it by 100000, a value of 1.234 appears
as -.00001234. It is the same with the other secondary inputs, except where
a number of digits is requested, see the text. If the shape is a basic
mandel
or Julia, any value between 1 and 4 makes sense, for the other ones itïs a
matter of try and error and experience. Use low resolutions for that
purpose.
Image(p2) is maxiter1, select a relatively low value, maybe 256. The
secondary input has 4 digits, the first 2 are used for frm1, the other 2
for frm2. The first one also accepts a negative input. A "-" will be
applied to this one only. If you have found the julia seed, see what image
you get and modify it with these inputs. Use the evolver, set max mutation
f.e to 0.5 for frm1 and to 0.003 for frm2. Higher figures generate smaller
shapes. Frm2 supplies a big variety of shapes, mirrored mandels or 2 mandels
combined to one shape, it even can be quadratic. This one is used in
todayïs image.
Real(p3) is the general bailout, use a really high value if you want
to fill those black holes, which are typical for many_mods.The second input
is the "number of sides" created by many_mods; a high number generates
smaller structures, f.e. 4 to 32. The format is the same as border1.
This value is doubled if m_m is called as in/out option and again, if called
twice. This leads to very high complexity, sometimes chaotic spots, so it
can
be shut off (-later).
Image(p3) is factor 2, take a value higher then maxiter2, just like factor1.
Border2 is fractional, same format as border1. For a basic mandel or
Julia a value between 4 and 32 makes sense, of course all other values are
possible. Modify this figure, so that nothing of the basic shape is covered,
if it is a mandel (and you want that), 9.1 is a good example.
Real(p4) is maxiter2, it makes sense to double the value of maxiter1 or any
higher value. The second input, factor 3 is used for in/out2, any value well
above maxiter 3, f.e. one third or double.
Image(p4) is border3, this one is not fractional, any value below bailout.
The second input, maxiter3 should be well below the general maxiter
on the x-screen in order to leave enough iterations for in/out2.
If you want to use the in-options exclusively set the border values higher
then bailout, and vv the maxiter values higher then general maxiter.
Real(p5): As explained use 1 digit only to create just the shape and add the
other 4 digits later. Add 5 to each selection, except the shape, in order to
reset it. Resetting generally adjusts the selected part to the screen
instead of
the surrounding, if itïs m_m, it creates circular shapes and helps avoid
chaotic spots. If this value is negative in/out1 is shut off.
The figures are as follows:
1_basic mandel, 2_basic julia, 3_many_mods, 4_hybrid Julia.
The second input is optional and determines where the basic frm2 is used,
regardless if itïs Julia or mandel. Type the number of the out-option you
want to use it for and the number of the in-option, zero if none. Type 3 to
use it on both. One digit only defines the out-option, add 5 to the first or
second digit, to use frm2 as shape. Precedence has the primary real(p5)
input, so these values must correspond to it, to be active.
One example: 18212.71 (or 18212.26) uses frm2 as shape, out2 and in1. Out1
is m_m with a reset, out2 is basic julia2, in1 is basic mandel2,in2 is
basic julia1. This may sound complicated, but you`ll manage after a couple
of times. An earlier version of this formula was much heavier.
Image(p5): Optional,
1 digit: "1" resets the iteration counter after the "wo" calculations,
"2" after in/out1, "3" after both. This effects the calculation of the
warp-factor. Add "5" or just type "5" to use the warpeffect on the shape.
2 digits: the first digit shuts off the m_m multiplication,
"1" at the in/out1 switch, "2" at the in/out2 switch, "3" completely.
Second input: Optional, used for the lake-effect variables. 6 digits,
2 digits for each one: Example 324151 means a frequency of 320, a level
of 41% and an amplitude of 0.51. Any valid input activates the lake effect.
The functions are used for the calculation of the warpeffect, if you use
a different one, possibly the corresponding factor must be changed.
For some Julias "sin" is a must.
Fn1 is shared by m_m and the basic image, so if that is not warped, it
is free to use. The m_m rendering changes dramatically.
Fn2 is used for in/out1
fn3 is used for in/out2
Thatïs it. I hope itïs understandable and not too chaotic.
Fractal greetings,
Al.
----------------------------start-par-------------------------------------
Easter_eggs { ; Time 0.29.47.49
; Albrecht Niekamp May, 03
reset=2002 type=formula formulafile=mult239.frm
formulaname=multifractal ismand=y function=exp/exp/exp passes=t
center-mag=-0.464607/-4.44089e-016/0.5117907
params=-0.8940855128635518/0.8105868709372235/384.00001/256.1133/2048.00\
008/768.0003400000001/768.01536/2560.01025/18934.5/5 float=y
maxiter=3072 inside=maxiter outside=tdis logmap=7 periodicity=0
rseed=-2436
colors=200444222000<25>0bo0cq0es<3>0kz<25>09C08A068<2>022000211<24>oiQqj\
RslS<3>zsX<25>CB7A96875<3>000400<23>o00q00s00<3>z00<25>C00A00800<3>000<2\
5>iiijjjlll<3>sss<25>BBB999777555
}
Wonderland { ; Albrecht Niekamp May, 03
; Time 1.09.00.09
; Version 2002 Patchlevel 5
reset=2002 type=formula formulafile=mult239.frm
formulaname=multifractal ismand=y function=exp/exp/exp passes=t
center-mag=-1.5922/0.155851/14.26617/1/95/1.31075705844807544e-014
params=-0.8940855128635518/0.8105868709372235/384.00001/256.1133/4094.00\
016/768.0003400000001/768.0076800000001/256.01024/18937.52/5 float=y
maxiter=3072 inside=maxiter outside=tdis logmap=7 periodicity=0
rseed=-2436
colors=200444222000<25>0bo0cq0es<3>0kz<25>09C08A068<2>022000211<24>oiQqj\
RslS<3>zsX<25>CB7A96875<3>000400<23>o00q00s00<3>z00<25>C00A00800<3>000<2\
5>iiijjjlll<3>sss<25>BBB999777555
}
-------------------------------start-frm-----------------------------------
FRM:Multifractal {; Albrecht Niekamp 16.5.01
;only integers as first input, second input 5 digits to the right
;real(p2) factor1,border1
;imag(p2) (-)maxiter1,input bas.frm1_2digits input bas.frm2_2digits
;real(p3) bailout,hyb.mandel: number of sides (Many_mods L.Allison)
;imag(p3) factor2,border2
;real(p4) maxiter2,factor3
;imag(p4) border3,maxiter3
;real(p5) 1digit_shape only 5digits: shape,out1,out2,in1,in2
; 1_mand 2_jul 3_hyb.mand 4_hyb.jul +5_reset (not shape) <0_no in/out1
; optional basic frm2: out-nbr 1digit in-nbr 1digit 3_both +5_shape
;imag(p5) 1digit : 1_iter1reset 2_iter2reset 3_both +5_shape effect
; 2digits : many_mods multipl.shutoff +10_in/out1 +20_in/out2 +30_both
; optional input2: frequency_2digits level_2digits amplitude_2digits
;
d=real(p2) ;factor1 , border1
fac1=trunc(d)
b1=(d-fac1)*100000
;
d=imag(p2)
da=d<0 ;p6 negative (frm1)
if (da)
d=-d
endif
mi1=trunc(d) ;maxiter1
d=round((d-mi1)*10000)
p6=trunc(d/100)/10 ;init. value frm1
d=d-1000*p6
if (da)
p6=-p6
endif
p7=d/10 ;init. value frm2
;
d=real(p3)
ba=trunc(d) ;bailout
mm=round((d-ba)*100000) ;m_mods nbr of sides
;
d=imag(p3)
fac2=trunc(d) ;factor2
b2=(d-fac2)*100000 ;border2
;
d=real(p4)
mi2=trunc(d) ;maxiter2
fac3=round((d-mi2)*100000) ;factor3
;
d=imag(p4)
b3=trunc(d) ;border3
mi3=round((d-b3)*100000) ;maxiter3
;
da=real(p5)
t=da<0 ;in/out2 only
if (t)
da=-da
endif
start=2-t ;inout1+inout2: start=2
dd=trunc(da)
if (dd<5)
start=0
endif
vb=(dd==3)+(dd==4) ;shape hybrid frm_1digit input
da=round((da-dd)*100)
d=trunc(dd/10000)
vb=(d==3)+(d==4)+vb ;shape hybrid frm_5digits input
dd=dd-d*10000
d=trunc(dd/1000)
or1=d>5 ;reset out1
d=d-5*or1
vv1=(d==3) ;hybrid frm out1_mandel
vv2=(d==4) ;hybrid frm out1_julia
dd1=(d==2)+(d==4) ;julia out1
dd=dd-d*1000
d=trunc(dd/100)
or2=d>5 ;reset out2
d=d-5*or2
vv3=(d==3) ;hybrid frm out2_mandel
vv4=(d==4) ;hybrid frm out2_julia
dd2=(d==2)+(d==4) ;julia out2
dd=dd-d*100
d=trunc(dd/10)
inr1=d>5 ;reset in1
d=d-5*inr1
v1=(d==3) ;hybrid frm in1_mandel
v2=(d==4) ;hybrid frm in1_julia
d1=(d==2)+(d==4) ;julia in1
dd=dd-10*d
d=trunc(dd)
inr2=d>5 ;reset in2
d=d-5*inr2
v3=(d==3) ;hybrid frm in2_mandel
v4=(d==4) ;hybrid frm in2_julia
d2=(d==2)+(d==4) ;julia in2
d=trunc(da/10)
da=da-10*d
ab=d>=5 ;shape frm2
d=d-5*ab
bb1=(d==1) ;frm2 out1
bb2=(d==2) ;frm2 out2
dd=da>=5 ;shape frm2_second digit
da=da-5*dd
ab=ab+dd
ab1=(da==1) ;frm2 in1
ab2=(da==2) ;frm2 in2
;
d=imag(p5)
dd=trunc(d)
d=round((d-dd)*1000000)
le=d>10000 ;lake effect on
da=trunc(dd/10)
so1=((da==1)+(da==3)==0) ;m_m multiplication off_in/out1
so2=((da==2)+(da==3)==0) ;m_m multiplication off_in/out2
dd=dd-10*da
wo=dd>=5 ;shape warpeffect
dd=dd-5*wo
ir1=(dd==1)+(dd==3) ;iter reset in/out1
ir2=(dd==2)+(dd==3) ;iter reset in/out2
if (le) ;lake effect
freq=round((trunc(d/10000))*10) ;frequency_lake effect by S.Gallet
d=d-freq*1000
level=(trunc(d/100))/100 ;water level
d=d-level*10000
ampl=d/100 ;amplitude of the wave
u=real(rotskew*pi/180)
t=exp(-flip(u))
bo=1/real(magxmag)
q=bo/0.75*imag(magxmag)
dd=tan(imag(rotskew*pi/180))
d3=2*q*t
rs=2*bo*(dd+flip(1))*t
z2=center+(-q-bo*dd-flip(bo))*t
z=pixel-z2
d=imag(conj(d3)*z)/imag(conj(d3)*rs)
if (d<=level)
da=level-d
z=z+2*da*(1+ampl*sin(freq*da^0.2))*rs
endif
z=z+z2
endif
if (ismand)
if (vb) ;many_mods
c=0.4*log(sqr(pixel^mm))
z=z*le
else
c=z*le+pixel*(le==0)
z=0
endif
else ;julia
c=p1
z=z*le+pixel*(le==0)
endif
t=0
d3=(ismand==0)
u=d3 ;warpeffect initial value
:
if (vb)
if (d3) ;julia
z=(z*z-real(c))^(z*u+imag(c)) ;hybrid julia
else
z2=fn1(z)+c ;hybrid mandel L.Allison
q=cos(z2)
z=c*(1-q)/(1+q)
endif
elseif (ab)
z=z*z+c+c*c-p7 ;basic frm2 Pusk.s Istv.n
elseif (d3)
z2=z*z
z=z2*z2+(p6+u)*z2+c ;basic frm1 as julia
else
z2=z*z ;basic frm1 Pusk s Istv n
z=z2*z2+(p6+u)*z2+c-p1
endif
bo=|z| ;bailout value
If (wo) ;shape warp effect
t=t+1
if ((t<mi1)+(bo>b1))
u=2*(fn1(t/fac1)) ;warpeffect
if (ismand)
z=z*u
if (vb) ;hybrid frm
c=0.4*log(sqr(pixel^mm)) ;init m_m
else
c=z*le+pixel*(le==0)
endif
else
z=z*le+pixel*(le==0) ;init julia
c=p1*u
endif
wo=0
if (ir1) ;iter reset
t=0
endif
endif
elseif (start) ;0_shape only
t=t+1
if (start==2) ;in/out1 + in/out2
if (bo>b2) ;z > border2 ?
u=2*(fn2(t/fac2))
rs=or1 ;reset
ab=bb1 ;frm2
if (dd1) ;julia?
if (rs)
z=pixel
endif
c=p1*u
vb=vv2 ;hybrid
d3=vb ;julia
else ;mandel
d3=0
z=z*u
c=z
if (rs) ;reset
z=0
endif
vb=vv1
if (vb)
if (so1) ;m_m multiplication
mm=mm+mm
endif
c=0.4*log(sqr(pixel^mm)) ;m_m init
endif
start=1
endif
elseif (t>mi2) ;counter > maxit2
u=2*(fn2(t/fac2)) ;warpeffect
rs=inr1
ab=ab1 ;frm2
if (d1)
if (rs)
z=pixel
endif
c=p1*u
vb=v2
d3=vb
else
d3=0
z=z*u
c=z
if (rs) ;reset
z=0
endif
vb=v1
if (vb)
if (so1) ;m_m multiplication
mm=mm+mm
endif
c=0.4*log(sqr(pixel^mm))
endif
endif
start=1
if (ir2)
t=0
endif
endif
elseif (bo>b3) ;start=1 z>border3
u=2*(fn3(t/fac3))
ab=bb2
rs=or2
if (dd2)
if (rs)
z=pixel
endif
c=p1*u
vb=vv4
d3=vb
else
d3=0
z=z*u
c=z
if (rs)
z=0
endif
vb=vv3
if (vb)
if (so2)
mm=mm+mm
endif
c=0.4*log(sqr(pixel^mm))
endif
start=0
endif
elseif (t>mi3) ;start=1 counter>maxiter3
u=2*(fn3(t/fac3))
ab=ab2
rs=inr2
if (d2)
if (rs)
z=pixel
endif
c=p1*u
vb=v4
d3=vb
else
d3=0
z=z*u
c=z
if (rs)
z=0
endif
vb=v3
if (vb)
if (so2)
mm=mm+mm
endif
c=0.4*log(sqr(pixel^mm))
endif
endif
start=0 ;mainloop only
endif
endif
bo<=ba ;z<=bailout
}
----------------------------end-------------------------------------------