The technique that Jim has been using to generate FOTDs over the past ~3
weeks isn't limited to just the Julibrot space. It seems to be a general
technique of looking at phase spaces for parameterized processes. In this
particular case, Jim has made the observation that the M-sets, perturbed
M-sets and quadratic Julia sets are all products of the same process, ie.
z->z^2+C, which has two complex variables. Thus the process can be
parameterized on 2 complex variables (the beginning value of z, z0, and C),
each of which he splits into 2 real variables to get a four dimensional
R-space. Defining planes by an anchor point and a pair of angles, and a
viewing direction by another pair of angles, he generates the planar cut
through the space to be viewed. I guess I stated the very obvious here, but
that procedure leads naturally to a way to generalize the slicing to spaces
defined by other processes. IOW, generally one has a process
z->F[K1,K2,K3,...](z) parameterized by the K, one constructs the space
K1xK2x..., then defines a linear slice through it which can be viewed on the
screen. The means of definition of the sliceshould be in such a way that
it's easy to understand variations in the K and do manipulations to get
different views.
So, when David brought up the cubic Mandelbrot sets, which have a third
parameter, it occurred to me that we could do slicing in their
Julibrot-equivalent spaces, ie. an R2 slice in an R6 space, if you are
comfortable with splitting a complex dimension into two real parts. I am
not comfortable with that approach, preferring to work natively in the
complex dimensions and mapping the slice to R2 only in order to view it on
my computer screen. Probably the two approaches are equivalent, but I'm not
positive the views generated are the same. In any event, one can generate
such slices for _any_ process with 3 process constants, which for wont of a
better term I'm calling "ternary slicing" for the obvious reason.
Now, I haven't worked these up into a .frm yet for the Rudy sets, cubic
Mandelbrot sets, whatever you want to call them. I'm sure I will in the
next few days, but in the meantime I noticed that the power-Msets make
another natural extension of the Jbrot process, ie. z -> z^a + c, gives a
phase space in C3 of {z0,a,c}. The Julibrot becomes a special case of the
plane through the Ternary Julibrot space that is defined by a=2+0i constant,
and arbitrary Julibrot slices are defined by lines on that plane. I'm sure
everyone gets the idea. But the nice thing is that plane is parallel to
ones containing the quartic Julibrot, etc., which can be generated by
changing a single value in the parameters on the fractint z-screen. And, of
course exploring the perpindicular and oblique slices through this extended
space by varying other, angle parameters. Some results are not what one
would expect; I have only looked at a few views, but here is a view I would
never have thought was inherent in a M-set-like space. This was generated
with the first .frm I tried, which inputs angles in complex format and so is
not really user friendly at entering the viewing angle, and possibly my
entering what should have been "pi/2" as "1.57" may have contributed to the
strangeness, but...
/************FRM BEGIN***********************/
TernaryJulibrotSlc { ; C1 linear slice of a C3 parameter phase space
; slices the power Julibrot (the quadratic Julibrot is the subset
; with a=(2,0) ).
; The phase space is of {z0,a,C} in the process z->z^a+C
; p1,p2,p3 are complex coords of an anchor point in the space
; p4,p5 are the complex latitude,longitude direction of the line
; emanating from the anchor point.
IF (scrnpix==(0,0)) ; once per screen initialization hack
ismand = true
lim = 100 ; don't know what this should be-- may depend on
"a"
;lat = (real(p4)*pi/180, tan(imag(p4)*pi/360)*pi/2)
;long = (real(p5)*pi/180, tan(imag(p5)*pi/360)*pi/2)
lat=p4 ; temporary patch -- conversion from (deg,deg) to complex
long=p5 ; angle failed to parse so enter angles in raw form
Muz= cos(lat) * cos(long) ; meaning of lat and long accid.
transposed
Mua= sin(lat) * cos(long) ; but retained because used in Xtampak
series
Muc= sin(long) ; slice's polar coord unit direction in C3 space
ENDIF
k = pixel ; pixel position is the parameter of variation
z=p1+k*Muz, a=p2+k*Mua, c=p3+k*Muc ; find pos in (z0,a,c) space
:
z = z ^ a + c
|z| <= lim
}
/**************FRM END***********************/
/**************PAR BEGIN**********************/
ThePalaceAtXtampak { ; This was supposed to be a mundane slice of the
; ternary phase space cubic julibrot. It doesn't
; look anything like the typical Mandelbrot features.
; Fractint Version 2003 Patchlevel 1
reset=2003 type=formula formulafile=exprmntl.frm
formulaname=ternaryjulibrotslc ismand=y passes=1
center-mag=-2.02478/-0.0573754/0.5629118/0.3572/90/1.31075705844807544e-\
014 params=0/0/2/0/0/0/1.57/0/0/0 float=y maxiter=200 inside=zmag
logmap=yes
colors=000h`z0e0<3>eL0eeeLLL<4>ssLzzLzzz000555<3>HHHKKKOOO<3>ccchhhmmmss\
sU0cxzw<3>xjUxfNxbFxi8wU0<4>ZfQUiV0e0Koe<3>0zz<2>0Gz<3>rVzzVzzVrzVjB`0zV\
V<3>zzV<3>VzV<3>VzzVrzVjzLW0hhz<3>zhz<3>zhh<3>zzhvzhqzhWQ0hzh<2>hzvm00xi\
8hqzhlz00S<3>S0SS0LS0EeL0000S70<2>SS0<3>0S0<3>0SS0LS0ESeee000IES<2>SES<3\
>SEE<3>SSEPSELSELLL000ESI<2>ESS<2>EHSKKS<2>QKSSKSSKQSKOSSL000SMKSOKSQKSS\
K<2>MSKKSKKSMKSOKSQKSSKQSKOSZZL000<8>PPCRRDUUF<3>eeL000<8>TTCWWDZZF<3>ll\
L000<8>XXC``DddF<3>ssL000<8>``CeeDiiF<3>zzL000<6>XXXaaafff<3>zzz000zzz
}
/*******************PAR END**********************/
Now, I did cobble together one possible mapping between complex angles and
what Jim calls double angles in the R4 space, based only on the observation
that the transcendental functions repeat every 2*pi the real direction, but
not in the imaginary direction, and applied it to this more user friendly
version of the .frm that takes ordinary degree measured angles as input for
the directions (maps the imaginary part of the angle with tan() so that 90
deg -> pi/2*i and 180 deg -> inf * i). Here is it:
/***********************FRM BEGIN******************/
TernaryJulibrotSl2 { ; C1 linear slice of a C3 parameter phase space
; slices the power Julibrot (the quadratic Julibrot is the subset
; with a=(2,0) ) in 6 dimensions with a 2 dimensional slice
; The phase space is of {z0,a,C} in the process z->z^a+C
; p1,p2,p3 are complex coords of an anchor point in the space
; p4,p5 are the complex latitude,longitude direction of the line
; emanating from the anchor point. They are input in user friendly
; (degree,degree) form instead of complex angular form.
; To start with the classic M-set initialize p2=(2,0);p4=(90,0);rest 0.
IF (scrnpix==(0,0)) ; once per screen initialization hack
ismand = true
lim = 100 ; ?
lat = real(p4)*pi/180+flip(tan(imag(p4)*pi/360)*pi/2)
long = real(p5)*pi/180+flip(tan(imag(p5)*pi/360)*pi/2)
;lat=p4 ; temporary patch if
;long=p5 ; angle fails to parse then enter in complex angular form
Muz= cos(long) * cos(lat)
Mua= sin(long) * cos(lat)
Muc= sin(lat) ; slice's polar coord unit direction in C3 space
ENDIF
k = pixel ; pixel position is the parameter of variation
z=p1+k*Muz, a=p2+k*Mua, c=p3+k*Muc ; find pos in (z0,a,c) space
:
z = z ^ a + c
|z| <= lim
}
/**********************FRM END**************************/
And here is a nice view of the quintic Mandelbrot that serves as a quick
rendering entry point for z-screening your way through the TJ space:
/************************PAR BEGIN**************************/
JovianCrown { ; Jumping-off place to explore the ternary Julibrot
; z->z^a+c.
p1..p3={z0,a,c};p4,p5={lat,long}each(deg,deg)
; This is the power a=5 M-like
((lat,long)=((90,0),(0,0)))
; Fractint Version 2003 Patchlevel 1
; Fractint Version 2003 Patchlevel 1
reset=2003 type=formula formulafile=exprmntl.frm
formulaname=TernaryJulibrotSl2 ismand=y passes=1
center-mag=-8.88178e-016/6.10623e-016/1.041667
params=0/0/5/0/0/0/90/0/0/0 float=y maxiter=200 inside=zmag
logmap=yes cyclerange=2/10
colors=000m00eee0000000L00e0<3>eL0SSLllLssLzzLzzz000555<3>HHHKKKOOO<3>cc\
chhhmmmsssU0cxzw<3>xjUxfNxbFxi8wU0<4>ZfQUiV0e0Koe<3>0zz<2>0Gz<3>rVzzVzzV\
rzVjB`0zVV<3>zzV<3>VzV<3>VzzVrzVjzLW0hhz<3>zhz<3>zhh<3>zzhvzhqzhWQ0hzh<2\
>hzvm00xi8hqzhlz00S<3>S0SS0LS0EeL0000S70<2>SS0<3>0S0<3>0SS0LS0ESeee000IE\
S<2>SES<3>SEE<3>SSEPSELSELLL000ESI<2>ESS<2>EHSKKS<2>QKSSKSSKQSKOSSL000SM\
KSOKSQKSSK<2>MSKKSKKSMKSOKSQKSSKQSKOSZZL000<4>EE7HH8JJ9MMBPPC<3>__IbbKee\
L000<4>GG7JJ8NN9QQBTTC<3>eeIiiKllL000<4>II7MM8QQ9TTBXXC<3>llIooKssL000<4\
>LL7PP8TT9XXB``C<3>rrIvvKzzL000<3>JJJOOOSSS<6>zzz000zzz
}
/************************PAR END*****************************/
Hopefully this is interesting to someone,
-- Hiram Berry