Guess I should have seen it coming...
Finished an article earlier than expected today. Had a few email
inquiries to get through and just finished the last one (someone wanting
to know what exactly Hilbert spaces are), made some posts of my own,
found myself with a whole afternoon with (just for a moment) no idea
what to do in it.
Brief moment of panic: what had I forgotten? Nope, just no active
contracts right now. Nothing needing writing, nothing needing coding,
nothing needing expediting, and my friend's nephew is still on holiday,
so he won't be in for his tutorial. Halfway through January and things
are still quiet.
Thought of a few things to do, but I'd already planned trips to the art
gallery to see the new Chinese exhibit and the museum for a bit of
digging through its archives for Thursday ... wasn't keen on the beach
at all ... seen the movies I've been planning to see ... read a book?
(glance at the shelves - nope, nothing saying "READ me! Read ME!") ...
take a nap? ... could go to the pub ... the usual suspects seemed
strangely boring. The proveribal drawing board was as metaphorically
quiet as the literal bookshelves.
Ended up spending the afternoon messing 'round on Fractint. Well, you
should have been able to guess that - otherwise this post about my day
and psychological state would have been entirely off-topic; it's not as
though any of you would actually be interested in my psychological state
while I munched lunch. It's just that I don't play with Fractint as much
as I did ... good thing I didn't pay for it, I suppose (Would I use it
more if I _had_ paid for it? Judging from past form, no. It would just
sit there with its cost/benefit ratio steadily climbing.)
I figured twenty pars worth keeping would be a convenient figure; to
make things more interesting for myself, I resolved to use only those
formulae that I'd coded myself. WFA, here are the final score:
Morgan L. Owens
"Now, to the theatre."
--*--*--
Ypres_Dawn { ; De l'autre extremite du monde.
; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=dynamics.frm
formulaname=distortpendulummg function=log passes=1
center-mag=-0.319069/0.0272592/24.6537 params=0.1/1 float=y
maxiter=255 inside=255 periodicity=0
colors=000<82>K00L00L00<90>gY0gY0gZ0gZ0hZ0<74>zzz
}
Asymptotic_Freedom { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=dynamics.frm
formulaname=HenonQuadmapJulGen function=cotanh/recip passes=1
center-mag=-1.36335/0.187656/1.572327/1/-90 params=0/0/0/0 float=y
maxiter=255 inside=epsiloncross proximity=-0.001 outside=0
periodicity=0
colors=653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mKLlHIjII<8>QRLOSLMTL<3>CXN<9\
>ekKhmKknK<3>wuI<9>VUOSRPPOQ<3>DCT<9>YCS_CSaCS<3>jCR<9>OMcMNeKOf<3>ATl<9\
>8EL8DI7BF<3>653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mKLlHIjII<8>QRLOSLMTL<3\
>CXN<9>ekKhmKknK<3>wuI<9>VUOSRPPOQ<3>DCT<9>YCS_CSaCS<3>jCR<9>OMcMNeKOf<3\
>ATl<14>AA9
}
Grand_Unification { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=dynamics.frm
formulaname=distortpendulummg function=zero passes=d
corners=-0.0475/0.285/0.15865385/-0.03365385 params=0.5/0.5 float=y
maxiter=255 inside=epsiloncross proximity=-0.00025 outside=0
periodicity=0 viewwindows=1/0.526/yes/0/0
colors=000ccc<3>nnnqqqtttwwwzzz<4>IIz99z00z<9>bbOffKjjG<3>zz0<9>zO0zK0zG\
0<3>z00<9>O0bK0fG0j<3>00z<9>0bO0fK0jG<3>0z0<9>bObfKfjGj<3>z0z<9>`0`Y0YV0\
V<2>N0NK0KJ1L<8>8Ia7Kc5Me<2>2Sk0Um0Vm<8>0em0fm0hm<2>0km0mm0mm<8>0gu0gu0f\
v<3>0cz<9>bqzfrzjtz<3>zzz<25>zhCzgAzf8<2>zd2zc0zd0<8>zq0zr0zt0<3>zz0<9>z\
O0zK0zG0<3>z00<14>ZZZ
}
Not_a_Nice_Doggy { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=chby19.frm formulaname=ca03-19
center-mag=-0.938086/0.440367/5.464481/1/-90 params=0.1/0.25/1/0
float=y maxiter=1023 inside=255 periodicity=0
colors=653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mKLlHIjII<8>QRLOSLMTL<3>CXN<9\
>ekKhmKknK<3>wuI<9>VUOSRPPOQ<3>DCT<9>YCS_CSaCS<3>jCR<9>OMcMNeKOf<3>ATl<9\
>8EL8DI7BF<3>653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mKLlHIjII<8>QRLOSLMTL<3\
>CXN<9>ekKhmKknK<3>wuI<9>VUOSRPPOQ<3>DCT<9>YCS_CSaCS<3>jCR<9>OMcMNeKOf<3\
>ATl<14>AA9
}
Binding_Energy { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=chby15.frm formulaname=C03-15
center-mag=4.26326e-014/-2.84217e-014/0.01293333 passes=t
params=0.1/0.5/100/0 float=y maxiter=255 inside=255 periodicity=0
colors=00000V<18>00s00t00v00w00x00z<41>0qz0rz0sz<3>0yz<9>bymfyljyk<3>zye\
<9>zyGzyEzyB<3>zy0<41>z80z70z50<2>z20z00y00<24>T00S00R00<3>L00<9>jaDleEo\
iF<3>zyL<9>z_8zY7zV6<3>zK0<8>Q90L70H60<3>000<22>00U
}
Membrane_Paradigm { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=chby7.frm formulaname=P07-07
center-mag=+0.30185741738705010/-1.15831114979194900/153.647/1/-87.599
params=0/0/1/0 float=y maxiter=255 inside=255 periodicity=0
colors=653<3>JIGNMK000UTR<3>fecjigmlj<2>xwu<9>qYXpVVoSS<2>mKLlHIjII<8>QR\
LOSLMTL<3>CXN<9>ekKhmKknK<3>wuI<9>VUOSRPPOQ<3>DCT<9>YCS_CSaCS<3>jCR<9>OM\
cMNeKOf<3>ATl<9>8EL8DI7BF<3>653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mKLlHIjI\
I<8>QRLOSLMTL<3>CXN<9>ekKhmKknK<3>wuI<9>VUOSRPPOQ<3>DCT<9>YCS_CSaCS<3>jC\
R<9>OMcMNeKOf<3>ATl<14>AA9
}
Unbothered_Title_2 { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=blend.frm
formulaname=quarterblend_ijjjj
center-mag=-0.00333611/4.44089e-016/0.6377551/1/90
params=-1/0/0/-1/0/1/-1/0 float=y maxiter=255 inside=255
potential=255/500/150 periodicity=0
colors=000<62>A0BA0BB0C<97>U01U01U01<2>V01V01V12W23<83>zzz
}
Unbothered_Title_3 { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=raytrace.frm
formulaname=threecircles2
center-mag=0.610996/1.77636e-015/0.5025363/1/90 params=0.8/0/2.6/0
float=y maxiter=255 inside=255 outside=atan periodicity=0
colors=000zzz<42>zzBzz9zz8<3>yy4yy4yx4<72>yX0yX0yW0<127>000
}
Unbothered_Title_4 {; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=newton_e.frm
formulaname=newton_elliptics_4
center-mag=+0.57733246912440290/+0.09997371801359245/123/1/53.13
params=0/1/0/0.1 float=y maxiter=1023 inside=255 periodicity=0
colors=000ueCwfBzgA<13>vEAuBAu9A<2>t3As0Aq7BnEDlLEGaY<24>iIejHelHe<3>qDg\
rWlsor<19>mfPmeOleMldLldJkcH<23>oYcpYdpYe<2>pXhqWioUh<4>`JcZHbWEa<3>K5X<\
8>LRkLUlLWn<3>Mfu<3>Zceab`daX<3>rYG<34>bdpadqadr`ds`dt_ev<24>HVRGVQGUP<3\
>CSJ<3>qSn<8>aVZ_VXZVV<3>RXN<12>sdD
}
Sagittal_Coherence { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=chby5.frm formulaname=sc06-05
passes=d center-mag=6.19973/9.57075/2.446735/1/10 params=1/0/1/0
float=y maxiter=1023 inside=255 outside=atan
invert=0.5/6.2038774233896/9.8444537114261 periodicity=0
colors=653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mKLlHIjII<8>QRLOSLMTL<3>CXN<9\
>ekKhmKknK<3>wuI<6>caM`_NYXN<3>MLRJISGFSDCT<9>YCS_CSaCS<3>jCR<5>XIZVJ_TK\
`<3>KOfIPhFRiDSkATl<9>8EL8DI7BF<3>653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mK\
LlHIjII<8>QRLOSLMTL<3>CXN<9>ekKhmKknK<3>wuI<6>caM`_NYXN<3>MLRJISGFSDCT<9\
>YCS_CSaCS<3>jCR<5>XIZVJ_TK`<3>KOfIPhFRiDSkATl<14>AA9
}
Not_Your_Job {
; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=chby5.frm formulaname=Ca10-05
passes=1
center-mag=+0.07662876962040530/+0.09346251373957647/6.137269e+012/1/-14\
.997/-0.001 params=2/0/1/0 float=y maxiter=1023 inside=255
periodicity=0 sound=beep/fm polyphony=3 wavetype=1
colors=00032t40t50s60s<36>ps`qt`rv_sw_uyZvzZwzYxzYzyXzwXzvW<30>OCHNBGLAG\
K8FJ6F<14>I5EI5EI5E<3>I5EIzE<4>IzE<3>IzEIzEH7F<33>CDLCELCEL<2>CELBFMDEM<\
3>I8OJ6PK5PL3QN2QO0RP0RQ0S<22>rZbs_cuac<2>xeezgezhfzjf<5>rsiqtjpvjnwkmyk\
lzlkzlizm<21>JUxITxGRy<3>BLzAKz9Iz<5>19w08v06v05u13u
}
Mandelbrot_Forgery { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=more.frm formulaname=Mandelbar
passes=1
center-mag=-0.62872052566293170/+0.11121047612571350/23956.75/0.1483/-12\
.868/-50.835 float=y maxiter=512 inside=255 logmap=-43 periodicity=0
colors=000Xtu<8>XvuXvuXvuXvuXwv<23>eeOfdNfdL<2>gaHh`Fg`F<25>FCSEBTDATC9U\
B8U97V<158>8RD7SC7SC<10>9SE9SE9SE<3>ASFXtu
}
Parallel_Transport { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=ifs.frm formulaname=A4Page
passes=1 center-mag=1/-0.666667/1.5 float=y maxiter=16
inside=startrail outside=0 periodicity=0 colors=@default
}
Two_Flows { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=chby24.frm formulaname=P03-24
function=sin/sqr/sinh passes=t
center-mag=-1.19245/26.7544/0.2931875/17.119/180 params=0.1/0
float=y maxiter=1023 inside=255 periodicity=0 sound=off polyphony=3
wavetype=1
colors=000LLL<9>LLjLLlLLo<2>LLwLLzLNx<8>Lj`LlZLoW<3>LzL<9>LzjLzlLzo<2>Lz\
wLzzNxx<8>j``lZZoWW<3>zLL<9>zLjzLlzLo<2>zLwzLzzNx<8>zj`zlZzoW<3>zzL<9>zz\
jzzlzzo<3>zzz<9>OOPKKMGGI<3>002<8>00Q00S00V<2>00b00e02c<8>0QG0SE0VB<3>0e\
0<9>0eQ0eS0eV<2>0eb0ee2cc<8>QGGSEEVBB<3>e00<9>e0Qe0Se0V<3>e0e<9>eDGeEEeF\
B<3>eL0<9>eYQeZSe_V<3>eee<14>NNN
}
Altern_AntiSpiral { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=more.frm formulaname=PokornyJul
center-mag=0.200125/0.776177/2.506266 params=0.25/0.9 float=y
maxiter=1023 inside=255 logmap=yes periodicity=0 colors=@altern
}
Puffer_Train { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=evenmore.frm
formulaname=Rossler2Man
center-mag=+0.87099255681842290/+0.45740250376426910/5.001221e+012/1.000\
1 params=0/0/12/0 float=y maxiter=1023 inside=255 logmap=57
periodicity=0
colors=653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mKLlHIjII<8>QRLOSLMTL<3>CXN<9\
>ekKhmKknK<3>wuI<9>VUOSRPPOQ<3>DCT<9>YCS_CSaCS<3>jCR<9>OMcMNeKOf<3>ATl<9\
>8EL8DI7BF<3>653<9>cb`fecjig<3>xwu<9>qYXpVVoSS<2>mKLlHIjII<8>QRLOSLMTL<3\
>CXN<9>ekKhmKknK<3>wuI<9>VUOSRPPOQ<3>DCT<9>YCS_CSaCS<3>jCR<9>OMcMNeKOf<3\
>ATl<14>AA9
}
FriendlyBiological { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=evenmore.frm
formulaname=Rossler2Man passes=1
center-mag=+0.80768598348989470/+1.07767747322206200/622.4066/1/28
params=0/0/12/0 float=y maxiter=1023 inside=255 logmap=9
periodicity=0
colors=tuu<3>tvvtvvtvvtvvuww<6>lwwkwwjwwiwwgww<3>ctvbtvasu<3>XosVnsUmr<1\
8>AXh9Wg8Vg7Uf6Te<4>5Pc5Oc5Ob4Na<18>17R17Q16Q<2>13O02N14O02N<8>16Q27Q27Q\
<3>3AT3BU3CV<6>4Ka4Lb5Mc<5>4Si4Tj4Uk3Vl3Wm<4>2_o1_p1`p<2>0cr0cr0br<3>1_q\
1Zp1Yp<8>3Qg3Pf3Oe<2>4La4K`3IZ<3>4GS4FQ5FO<3>6CG7BD7BD<70>oqqpqqqrrqrrrs\
s<8>suu
}
Corrosion {
; Kerry Mitchell colour map
; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=chby17.frm formulaname=H04-17
function=ident/log passes=1
center-mag=-0.405748/-0.631308/5.253812/1/-34.999 params=0/0/1/0
float=y maxiter=1023 inside=255 periodicity=0
colors=222qU6yaEqaMyiUeYQYQIaaaiiiqiayqiqqqyyyemuYemQeuIYmAYu2QmAQe2IYMU\
aUaiQQQIIIAIQ2AIAAA642IC6UKAYK6iSAqS2u_Eq_IugUi_QYSMY_aigeqgYuoiqomuwyio\
uYgqUguI_qA_y6SmASi6KYISaU_eUSQIKMAKU6CIACEA62IEAUI6YMAiQ6uU2qYEuaIqeUiY\
MYUQYaeieauiYqmiuqmquyimqYiuUeqIau6YyAUm6QiAMYIUeUYaUQMIMQ6IUAEI6AEA86IG\
EQG6YOEeO6yW2qWAycIqcQiWIaWQYciecaykYqkeysmqsuikmakuUcmMcu2WyAWq2OiAOaIW\
iQWaUOIMOQ2GUAGM28EEA6MIEQE2aQEeM2yY6mUAyeMmaQeUIaYUaeieaYymamieyuqmquei\
mamyQamMey2UuEYq2MeEQaMYiQUYQMIMQU2EQEIM26AE82MGAUG2aOAiO2uW6mWEucMmcUeW\
MYWUaceicYukamkiusqmsyekqYkyQcqIcy6WuEWm6OeEOYMWeUWYQOMIOU6GQEGI68AIA2QI\
AYI2eQAmQ2uYAmYIueQiaUaUMYYYeeemeYumemmmuuuiqyaiqUiyMaqEay6UqEUi6MaIQYQY\
eUUUMMMEMU6EMEEE666MC2QKEaK2eSEmS6y_Am_MygQe_UaSIa_Yegimgayoemoqywueoyag\
mQgyM_mE_u2SqESe2KaMSYQ_iQSUMKIEKQ2CMECA246ME6UMEaM6iUE
}
Mitrocoma { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=chby26.frm formulaname=T03-26
function=abs/ident/ident passes=1
center-mag=-0.833021/0.838198/7.751938 params=2/0.2/0/0/8/1 float=y
maxiter=1023 inside=255 periodicity=0 colors=(a)blues.map
}
Six_OClock { ; Version 2001 Patchlevel 8
reset=2001 type=formula formulafile=twodne~1.frm
formulaname=twodnewton_o passes=t
center-mag=+17.61898205646764000/+11.36059478637080000/109.2896/1/-22.49\
9 params=0.1/-1 float=y maxiter=1023 inside=255 periodicity=0
colors=000e0_e0be0e<9>eDGeEEeFB<3>eL0<9>eYQeZSe_V<3>eee<9>TTTSSSRRR<2>NN\
NLLLLLN<8>LLjLLlLLo<2>LLwLLzLNx<3>LYm<21>MruMsvMtv<3>Nxx<8>j``lZZoWW<3>z\
LLzLNzLQzLS<18>zgVzhVzjV<2>zmVzoWzrTztRzwOzzL<9>zzjzzlzzo<3>zzz<3>kkkggg\
ccd__`<31>__`<4>__`0_60b30e0<9>0eQ0eS0eV<2>0eb0ee2cc<8>QGGSEEVBB<3>e00<1\
2>e0Y
}
frm:distortpendulumMG{
bailout=4
dt=real(p1)
a=imag(p1)
b=real(pixel)
c=imag(pixel)
time=0
z=pixel:
x=real(z)
y=imag(z)
z=x+dt*y+flip(y+(dt*fn1(b*x-c*time)-x)*a)
time=time+dt
|z|<=bailout}
frm:HenonQuadmapJulGen{
bailout=real(p2)+4
c=p1
d=1-c
z=pixel:
x=real(z)
nx=c*x-imag(z)-d*fn1(x)
z=nx+flip(x-c*nx+d*fn2(nx))
|z|<=bailout}
frm:Ca03-19 {; V.1.1 - earlier versions may be discarded
; Copyright (c)1998,1999 Morgan L. Owens
; = (2(a+2)xCa(2)-(2a+1)Ca(1))/3
a=p2, b=(a+a)*(a+1), c=(a+a+4)/3
t=p1, bailout=4, z=pixel:
x=real(z), y=imag(z)
y=y+t*(b*x*(c*x*x-1))
x=x-t*(b*y*(c*y*y-1))
z=x+flip(y)
|z|<=bailout
}
frm:C03-15 {; V.1.1 - earlier versions may be discarded
; Copyright (c)1998,1999 Morgan L. Owens
; = zC02-C01
r=p1, bailout=real(p2)/10000, z=pixel:
zz=z*z
f=z*(zz-3)
fd=3*zz-3
oz=z
z=z-r*f/fd
bailout<=sqrt(|(|z|)-(|oz|)|)
}
frm:P07-07 (XYAxis) {; V.1.1 - earlier versions may be discarded
; Copyright (c)1998,1999 Morgan L. Owens
; = (13zP06-6P05)/7
bailout=real(p2)/10000, z=pixel:
zz=z*z
f=z*(3*zz*(11*zz*(13*zz-21)+105)-35)/16
fd=(21*zz*(11*zz*(13*zz-15)+45)-35)/16
oz=z
w=z-f/fd
ww=w*w
fw=w*(3*ww*(11*ww*(13*ww-21)+105)-35)/16
z=w-fw/fd
bailout<=|z-oz|
}
frm:quarterblend_iJJJJ{
z=pixel:
if(imag(z)>0)
if(real(z)<0)
c=p1
else
c=p2
endif
else
if(real(z)>0)
c=p3
else
c=p4
endif
endif
z=sqr(z)+c
|z|<=4}
frm:threecircles2 {
; three circles located at the cube roots of 1
; real(p1) specifies their common radius - note that they're tangent to
; each other when real(p1)=sqrt(3)/2.
;
; p2 specifies a point (the "radiant") from which test particles are
; launched. More precisely, every point in the complex plane emits a
; test particle, which travels directly away from p2
;
; First, we need to establish the centres of the three circles.
centre1=1
centre2=exp(flip(2*pi/3))
centre3=sqr(centre2) ; Reckon this is faster than another exp()?
rho=real(p1)
direction=pixel-p2
z = pixel
trapped=(|z-centre1|<sqr(rho) || |z-centre2|<sqr(rho) || |z-centre3|<sqr(rho))
; For efficiency, we see if z is _inside_ a circle. If it is, we can
; predict how long it will take to escape :-)
; Note also that since Fractint's || operator is nonstandard, we use
; sqr(rho) instead of rho.
: ; End of initialisation section. Now beginning the loop.
if(trapped)
escaped=0 ; We'll continue to iterate, though - so that the insides of
; the circles really are classified as "inside"
else ; Let's get dangerous
; Right, we have a ray that passes through the point z in the direction
; theta. Finding the intersections (if any) of this ray with a circle
; involves finding the solutions of a certain quadratic with real
; coefficients. If the quadratic has two real roots, then the ray cuts the
; circle. If it has one real root (necessarily of multiplicity two) then
; the ray is tangent to the circle. And if both roots are complex, then
; the ray misses the circle completely.
escaped=1 ; As far as we know at the moment.
hit=9999 ; Meaningless when escaped==1
;Examining circle 1
coefA = |direction|
coefB = real(z-centre1)*real(direction)+imag(z-centre1)*imag(direction)
coefC = |z-centre1|-sqr(rho)
discriminant=coefB*coefB-coefA*coefC
; If discriminant==0, then the ray is tangent to circle 1 - we won't
; count this as a "reflection"
; If discriminant<0, then the ray misses circle 1 completely.
if(discriminant>0) ; Two solutions
t1=(-coefB-sqrt(discriminant))/coefA
t2=(-coefB+sqrt(discriminant))/coefA
if(t1>0) ; If t1<0 then this hit is actually behind us
escaped=0 ; Sorry, not this time.
hit=t1
target=1 ; The first circle
endif
if(t2>0 && t2<t1) ; Hits t2 before hitting t1
escaped=0
hit=t2
target=1
endif
endif
; Circle 2
; coefA = |direction| is already known
coefB = real(z-centre2)*real(direction)+imag(z-centre2)*imag(direction)
coefC = |z-centre2|-sqr(rho)
discriminant=coefB*coefB-coefA*coefC
if(discriminant>0)
t1=(-coefB-sqrt(discriminant))/coefA
t2=(-coefB+sqrt(discriminant))/coefA
if(t1>0 && t1<hit)
escaped=0
hit=t1
target=2
endif
if(t2>0 && t2<t1 && t2<hit)
escaped=0
hit=t2
target=2
endif
endif
; Circle 3
coefB = real(z-centre3)*real(direction)+imag(z-centre3)*imag(direction)
coefC = |z-centre3|-sqr(rho)
discriminant=coefB*coefB-coefA*coefC
if(discriminant>0)
t1=(-coefB-sqrt(discriminant))/coefA
t2=(-coefB+sqrt(discriminant))/coefA
if(t1>0 && t1<hit)
escaped=0
hit=t1
target=3
endif
if(t2>0 && t2<t1 && t2<hit)
escaped=0
hit=t2
target=3
endif
endif
; We now know when we hit a circle (hit) and which circle it is (target)
; The hit point is z+direction*hit, the normal at this point is
; z-centre?, which we normalise to a unit vector (un).
;
; We set z to the hit point, and the reflected vector is
; direction-2(direction.un)un
if(target==1)
un=(z-centre1)/cabs(z-centre1)
elseif(target==2)
un=(z-centre2)/cabs(z-centre2)
else
un=(z-centre3)/cabs(z-centre3)
endif
r=direction-2*(real(direction)*real(un)+imag(direction)*imag(un))*un
z=z+direction*hit
direction=r
endif
;bailout continue until we escape
escaped==0
}
frm:newton_elliptics_4{
x=real(pixel)
y=imag(pixel)
A=real(p1)
B=imag(p1)
phi=tan(real(p2))
t=imag(p2)
z=x+flip(y)
:
oz=z
x=real(z)
y=imag(z)
d=2*y*phi-(3*sqr(x)+A)
f=(sqr(x)+A)*x+B-sqr(y)
g=phi*x+t-y
nx=x-f+2*y*g
ny=y-phi*f+(3*x^2+A)*g
z=nx+flip(ny)
|z-oz|>0.0001
}
frm:Mandelbar(Xaxis){
z=pixel:
z=sqr(conj(z))+pixel
|z|<=4}
Julibar(Origin){
z=pixel:
z=sqr(conj(z))+p1
|z|<=4}
frm:A4Page(XYAxis){
s=-sqrt(2)
z=pixel:
x=real(z)
y=imag(z)
if(x>0)
z=s*(flip(conj(z)-1))
else
z=s*(flip(conj(z)+1))
endif
|z|<=300}
frm:Sc06-05 {; V.1.1 - earlier versions may be discarded
; Copyright (c)1998,1999 Morgan L. Owens
; = Sc[6]=2(zO[5]-cos(5*pi/2)^2)/5
r=p1, bailout=real(p2)/10000, z=pixel:
z2=z*z, z4=z2*z2
f=((((((72-8*z)*z-192)*z+384)*z-704)*z+768)/(z4*z))
fd=((((384-72*z)*z-1152)*z+2816)*z-3840)/(z4*z2)
oz=z
z=z-r*f/fd
bailout<=|z-oz|
}
frm:twodnewton_o{
h = real(p1)
m = imag(p1)
z=pixel:
oz=z
x=real(z),y=imag(z)
f=2*x-y-m*(x-x*x)
g=2*y-x-m*(y-y*y)
fx=2-m*(1-2*x)
gy=2-m*(1-2*y)
delta =(-g-f*gy)/(fx*gy-1)
epsilon=(-f-g*fx)/(fx*gy-1)
nx=x+h*delta
ny=y+h*epsilon
z=nx+flip(ny)
|oz-z|>.001
}
frm:Rossler2Man(XAxis){
bailout=real(p2)+4
z=p=pixel:
x=real(z)
y=imag(z)
z=abs(sqr(x)-sqr(y))-real(p)+flip((x+x)*y-imag(p))
|z|<=bailout}
frm:PokornyJul(Origin){
bailout=4
c=p1
z=pixel:
z=1/(sqr(z)+c)
|z|<=bailout}
frm:P03-24 {; V.1.1 - earlier versions may be discarded
; Copyright (c)1998,1999 Morgan L. Owens
; = ( 5zP02-2P01)/3
t=p1, bailout=4, z=fn3(pixel):
x=real(z), y=imag(z)
y=y+t*(fn1(x*(5*x*x-3)/2))
x=x-t*(fn2(y*(5*y*y-3)/2))
z=x+flip(y)
|z|<=bailout
}
frm:T03-26 {; V.1.1 - earlier versions may be discarded
; Copyright (c)1998,1999 Morgan L. Owens
; = 2zT02-T01
t=p1, bailout=real(p3), z=pixel, v=imag(p3):
x=real(z), y=imag(z)
Tx=(fn1(x*(4*x*x-3)))
Ty=(fn1(y*(4*y*y-3)))
x=x-t*Ty, y=y+t*Tx
w=fn1(x+flip(y))
z=fn3(v/fn2(w*w))+p2
|z|<=bailout
}
frm:H04-17 {; V.1.1 - earlier versions may be discarded
; Copyright (c)1998,1999 Morgan L. Owens
; = 2(xH(3)-3H(2))
z=pixel, oz=0
fz=12
zt=fn1(z)+p1:
foz=fz
zz=z*z
fz=4*(4*zz*(zz-3)+3)
z=z-p2*fz*(z-oz)/(fz-foz)
oz=zt
zt=fn2(z)
|fz|>=0.0001
}
frm:Ca10-05 {; V.1.1.1 - earlier versions may be discarded
; Copyright (c)1998,1999 Morgan L. Owens
; = ((a+9)xCa(9)-(a+4)Ca(8))/5
a=p1
b1=a*(a*(a*(a*(a+10)+35)+50)+24)/382860
c1=15*(a+5)
d1=2*(a+6)
e1=a*(a+15)+56
f1=2*(a+9)/45
g1=14*(2*a+13)/5
b2=a*(a*(a*(a*(a*(a+15)+85)+225)+274)+120)/12762
e2=(a+9)/9
f2=21*(2*a+13)/5
bailout=real(p2)/10000, z=pixel:
zz=z*z
f=b1*(c1*zz*(d1*zz*(81*zz*(e1*zz*(f1*zz-1)+g1)-1418)+2127)-31903)
fd=b2*z*(d1*zz*(162*zz*(e1*zz*(e2*zz-2)+f2)-2881)+2127)
oz=z
z=z-f/fd
bailout<=|z-oz|
}