Subject : [Fractint] Re: New Formulas

Date : Sun, 19 Aug 2007 17:13:12 +0000

From : jackoftradez@comcast.net

To : fractint@mailman.xmission.com


Animation of der PARs Russ Walsmith VILL post here SOON is posted:

http://www.fractal-animation.net/vid/immortal.zip
-------------------------------------------------

JoTz thinks he's extorted me here, with his insistence that I post the new formulas if he was to post the animation. I did get all proprietary about this stuff for a minute there; I was selling lots of images so I wasn't in a hurry to broadcast the technique. That soon got to be a burnout, so I'm examining alternatives as we speak. Meanwhile, I've been looking forward to posting these formulas here, because although the 'triternion' based M-set, i.e., the T-set, came to/through me, it is definitely took form as the result of a co-creative process. It would never have flowered without the energy of the feedback I got from this list. Of course, without the open-source attitude of the Fractint developers, where would any of us be. So thanks to all! And thanks to Richard, for reminding me to toggle for plain text to make the pars display properly. This time I think it'll work:
--------------------------------------------

Okay, when last seen on this list I was lobbying for a 3D pixel... Why? Well, it goes way back, but let's start with Gerald K. Dobiasovsky’s Rot3D Fractint formula. Gerald wrote this amazing code to wrap around a 3D formula I'd discovered, and render it as a solid object, viewable from virtually any angle it seemed. The trade-off was that the code sucked up a lot of Fractint's resources and many familiar x-functions and other options were not available in this context. I wanted the best of both worlds, and at that time the solution seemed to me to be a 3D pixel.

It turns out that the resources to generate the images I wanted were already at hand, but it took me months to see it. Indeed, it wasn't until I'd forgotten the whole thing that a vision came to me. I suddenly saw that I could adapt just part of Gerald's code to my formula, in a way that it would retain its rotational functions, but generate only a single slice rather than a solid.

So this:

frm:Rot3d_T-set {;periodicity=no, outside=summ
;maxit > p5real*(p5imag+1)
;--------------------------------------------
;p1real: Rotation about x-axis (1st rotation)
;p1imag: Rotation about y-axis (2nd rotation)
;p2real: Far clipping plane
;p2imag: Near clipping plane
;p3real: x1(0)
;p3imag: y1(0)
;p4real: z1(0)
;p4imag: Bailout
;p5real: Maxiter per slice
;p5imag: Number of slices - 1
;--------------------------------------------
;
bailout = imag(p4), tiefnum = imag(p5)
delta = (real(p2)-imag(p2))/tiefnum
tmp = pi/180
rotXax = exp(flip(real(p1)*tmp)), rotYax = exp(flip(imag(p1)*tmp))
;
HPixXY = rotYax
VPixZ = real(rotXax)
VPixXY = flip(conj(rotYax))
NXY = VPixZ*VPixXY
NZ = imag(conj(rotXax))
VPixXY = -NZ*VPixXY
;
tmp = NXY*imag(p2) + HPixXY*real(pixel) + VPixXY*imag(pixel)
cx = cx0 = real(tmp), cy = cy0 = imag(tmp)
cz = cz0 = NZ*imag(p2) + VPixZ*imag(pixel) ;HPixZ -> 0
tmp = NXY*delta, dcx = real(tmp), dcy = imag(tmp)
dcz = NZ*delta
x1 = real(p3)
y1 = imag(p3)
z1 = real(p4)
j = m = i = 0:
a = sqr(x1) + 2*y1*z1
b = sqr(z1) + 2*x1*y1
c = sqr(y1) + 2*x1*z1
x1 = a + cx, y1 = b + cy, z1 = c + cz
IF (bailout >= (sqr(x1)+sqr(y1)+sqr(z1)))
i = i + 1
ELSE
i = 0
m = m + 1
cx = cx0 = cx0 + dcx
cy = cy0 = cy0 + dcy
cz = cz0 = cz0 + dcz
x1 = real(p3), y1 = imag(p3), z1 = real(p4)
ENDIF
z = m - j
j = j + 1
tiefnum >= m && p5 >= i
}

became the formula you'll see at the end of the par files below. To create the pars, I chose arbitrary angles and poked around a little bit, just to demonstrate how it works. I.e., real(p1) is X-axis rotation, imag(p1) is Y-axis rotation and real(p2) controls Z-axis elevation. Z-axis rotation is of course built into Fractint's zoombox. The color maps are borrowed/stolen from some Lee Skinner files...


----------------------Par files----------------------

3DT1 {
; Fractint Version 2004 Patchlevel 3
reset=2004 type=formula formulafile=file
formulaname=NrotT passes=3
center-mag=-0.409232/-0.0419349/1.319302/1/-39.9999999999850431/\
-7.45483536013225034e-012 params=30/60/0/0 float=y
maxiter=500 inside=fmod outside=fmod periodicity=0
colors=000IG5<3>SU9UXAX`BZcC`fDhrI<3>UnXRm_NlcJkgFfpAaz<3>PJoSFl\
WAi_5fc0ce7_jFRoNIzb0<2>zz1zzC<2>zzz<3>jqdfo_blU<3>Mb8<3>LQ8KM8K\
J8<2>I88H44G00<3>TA5WD6ZF7aI8eLAhMBiODjQF<3>qeBriAtm9vq8xu7zz5zz\
4zz3<4>zj4zg4zc4<3>zS5zP5zL6zI6zE6wE6tD6<6>vAIv9Kv9M<3>x7Sy7Uy6W\
z6Yz5_<3>f5Ma5IW4E<2>_4H<3>P3DN2CK2A<3>805G0BO0G<3>g0Ul0Xq0`v0d<\
2>y0fz0gy0h<3>u1m600enG000t1ns1or2q<2>v2u<3>c5dZ6`U6X<2>F9LAAG7F\
O4KW0Qc<3>5Xc6Zc7`c7aa7c_7eY<3>FcgHciJbl<3>S_v<3>civflvinvlqvotv\
sww<2>zzz<3>rwzovzhsw<3>Gch8_d8Xa<3>8JP8FL8CI<3>SCCXCAaB9<3>uA2z\
A0xA0<12>SA1QA1NA1<3>D92GD3
}

3DT2 {
; Fractint Version 2004 Patchlevel 3
reset=2004 type=formula formulafile=file
formulaname=NrotT passes=3
center-mag=-1.18271378376611700/-0.08563326265067148/564833.1/1/\
144.999999994806842/3.39427561751870499e-009
params=30/60/0/0 float=y maxiter=1000 inside=fmod
outside=fmod periodicity=0
colors=000000zr1zz1zzC<2>zzz<2>nsjQdrLdtblU<3>Mb8<3>LQ8KM8KJ8<2>\
I88H44G00<3>TA5WD6ZF7aI8eLAhMBiODjQF<3>qeBriAtm9vq8xu7zz5zz4zz3<\
4>zj4zg4zc4<3>zS5zP5zL6zI6zE6wE6tD6<6>vAIv9Kv9M<3>x7Sy7Uy6Wz6Yz5\
_<3>f5Ma5IW4E<2>_4H<3>P3DN2CK2A<3>805G0BO0G<3>g0Ul0Xq0`v0d<2>y0f\
z0gy0h<3>u1mt1ns1or2q<2>v2u<3>c5eZ6`U6X<2>F9LAAG7FO4KW0Qc<3>5Xc6\
Zc7`c7aa7c_7eY<3>FcgHciJbl<3>S_v<3>civflvinvlqvotvsww<2>zzz<3>rw\
zovzhsw<3>Gch8_d8Xa<3>8JP8FL8CI<4>XCAaB9fB7<3>zA0<13>SA1QA1NA1<3\
>D92<6>UXAW`BYcC<3>hrI<3>UnXRm_NlcJkgFfpAaz<3>PJoSFlWAi_5fc0ce7_\
jFRoNIzb0zj0
}

3DT3 {
; Fractint Version 2004 Patchlevel 3
reset=2004 type=formula formulafile=file
formulaname=NrotT passes=3
center-mag=-1.32840608235000200/+0.07132735675645727/74.59508/1/\
-25.0000000000003553/5.21999110603132976e-013
params=30/60/0/0 float=y maxiter=1000 inside=fmod
outside=fmod periodicity=0
colors=000000zr1zz1zzC<2>zzz<2>nsjQdrLdtblU<3>Mb8<3>LQ8KM8KJ8<2>\
I88H44G00<3>TA5WD6ZF7aI8eLAhMBiODjQF<3>qeBriAtm9vq8xu7zz5zz4zz3<\
4>zj4zg4zc4<3>zS5zP5zL6zI6zE6wE6tD6<6>vAIv9Kv9M<3>x7Sy7Uy6Wz6Yz5\
_<3>f5Ma5IW4E<2>_4H<3>P3DN2CK2A<3>805G0BO0G<3>g0Ul0Xq0`v0d<2>y0f\
z0gy0h<3>u1mt1ns1or2q<2>v2u<3>c5eZ6`U6X<2>F9LAAG7FO4KW0Qc<3>5Xc6\
Zc7`c7aa7c_7eY<3>FcgHciJbl<3>S_v<3>civflvinvlqvotvsww<2>zzz<3>rw\
zovzhsw<3>Gch8_d8Xa<3>8JP8FL8CI<4>XCAaB9fB7<3>zA0<13>SA1QA1NA1<3\
>D92<6>UXAW`BYcC<3>hrI<3>UnXRm_NlcJkgFfpAaz<3>PJoSFlWAi_5fc0ce7_\
jFRoNIzb0zj0
}

3DT4 {
; Fractint Version 2004 Patchlevel 3
reset=2004 type=formula formulafile=file
formulaname=NrotT passes=3
center-mag=-0.28477637453427680/-0.33348986019581970/849.9581/1/\
152.499999999998067/1.37438671554690472e-012
params=30/60/0/0 float=y maxiter=1000 inside=fmod
outside=fmod periodicity=0
colors=000enG000t1ns1or2q<2>v2u<3>c5dZ6`U6X<2>F9LAAG7FO4KW0Qc<3>\
5Xc6Zc7`c7aa7c_7eY<3>FcgHciJbl<3>S_v<3>civflvinvlqvotvsww<2>zzz<\
3>rwzovzhsw<3>Gch8_d8Xa<3>8JP8FL8CI<3>SCCXCAaB9<3>uA2zA0xA0<12>S\
A1QA1NA1<3>D92<3>NN7PQ8SU9<3>`fDhrI<3>UnXRm_NlcJkgFfpAaz<3>PJoSF\
lWAi_5fc0ce7_jFRoNIzb0<2>zz1zzC<2>zzz<3>jqdfo_blU<3>Mb8<3>LQ8KM8\
KJ8<2>I88H44G00<3>TA5WD6ZF7aI8eLAhMBiODjQF<3>qeBriAtm9vq8xu7zz5z\
z4zz3<4>zj4zg4zc4<3>zS5zP5zL6zI6zE6wE6tD6<6>vAIv9Kv9M<3>x7Sy7Uy6\
Wz6Yz5_<3>f5Ma5IW4E<2>_4H<3>P3DN2CK2A<3>805G0BO0G<3>g0Ul0Xq0`v0d\
<2>y0fz0gy0h<3>u1m600
}

3DT5 {
; Fractint Version 2004 Patchlevel 3
reset=2004 type=formula formulafile=file
formulaname=NrotT passes=3
center-mag=-0.14884238268022650/-0.38832806053613630/1979.434/1/\
167.500000000001677/-1.53900503452319981e-012
params=30/60/0/0 float=y maxiter=2000 inside=fmod
outside=fmod periodicity=0
colors=000v1lu1m600enG000t1ns1or2q<2>v2u<3>c5dZ6`U6X<2>F9LAAG7FO\
4KW0Qc<3>5Xc6Zc7`c7aa7c_7eY<3>FcgHciJbl<3>S_v<3>civflvinvlqvotvs\
ww<2>zzz<3>rwzovzhsw<3>Gch8_d8Xa<3>8JP8FL8CI<3>SCCXCAaB9<3>uA2zA\
0xA0<12>SA1QA1NA1<3>D92<3>NN7PQ8SU9<3>`fDhrI<3>UnXRm_NlcJkgFfpAa\
z<3>PJoSFlWAi_5fc0ce7_jFRoNIzb0<2>zz1zzC<2>zzz<3>jqdfo_blU<3>Mb8\
<3>LQ8KM8KJ8<2>I88H44G00<3>TA5WD6ZF7aI8eLAhMBiODjQF<3>qeBriAtm9v\
q8xu7zz5zz4zz3<4>zj4zg4zc4<3>zS5zP5zL6zI6zE6wE6tD6<6>vAIv9Kv9M<3\
>x7Sy7Uy6Wz6Yz5_<3>f5Ma5IW4E<2>_4H<3>P3DN2CK2A<3>805G0BO0G<3>g0U\
l0Xq0`v0d<2>y0fz0gy0hx0iw1k
}

3DT6 {
; Fractint Version 2004 Patchlevel 3
reset=2004 type=formula formulafile=file
formulaname=NrotT passes=3
center-mag=-0.14799944943377080/-0.39312872010527840/241.4909/1/\
-149.999999999999858/6.39974184757363673e-014
params=30/60/0/0 float=y maxiter=1500 inside=fmod
outside=fmod periodicity=0
colors=000v1lu1m600enG000t1ns1or2q<2>v2u<3>c5dZ6`U6X<2>F9LAAG7FO\
4KW0Qc<3>5Xc6Zc7`c7aa7c_7eY<3>FcgHciJbl<3>S_v<3>civflvinvlqvotvs\
ww<2>zzz<3>rwzovzhsw<3>Gch8_d8Xa<3>8JP8FL8CI<3>SCCXCAaB9<3>uA2zA\
0xA0<12>SA1QA1NA1<3>D92<3>NN7PQ8SU9<3>`fDhrI<3>UnXRm_NlcJkgFfpAa\
z<3>PJoSFlWAi_5fc0ce7_jFRoNIzb0<2>zz1zzC<2>zzz<3>jqdfo_blU<3>Mb8\
<3>LQ8KM8KJ8<2>I88H44G00<3>TA5WD6ZF7aI8eLAhMBiODjQF<3>qeBriAtm9v\
q8xu7zz5zz4zz3<4>zj4zg4zc4<3>zS5zP5zL6zI6zE6wE6tD6<6>vAIv9Kv9M<3\
>x7Sy7Uy6Wz6Yz5_<3>f5Ma5IW4E<2>_4H<3>P3DN2CK2A<3>805G0BO0G<3>g0U\
l0Xq0`v0d<2>y0fz0gy0hx0iw1k
}

3DT7 {
; Fractint Version 2004 Patchlevel 3
reset=2004 type=formula formulafile=file
formulaname=NrotT passes=3
center-mag=-0.27335510710850930/-0.33261891955182190/602.8773/1/\
152.499999999999545/6.23771867491740295e-013
params=30/60/0/0 float=y maxiter=1000 inside=fmod
outside=fmod periodicity=0 colors=@lskin4.map
}

3DT8 {
; Fractint Version 2004 Patchlevel 3
reset=2004 type=formula formulafile=file
formulaname=NrotT passes=3
center-mag=-0.28068146663278950/-0.33155663391069030/103.6949/1/\
152.499999999999886/7.67164110015983169e-014
params=30/60/0/0 float=y maxiter=1000 inside=fmod
outside=fmod periodicity=0
colors=000v1lu1m600enG000t1ns1or2q<2>v2u<3>c5dZ6`U6X<2>F9LAAG7FO\
4KW0Qc<3>5Xc6Zc7`c7aa7c_7eY<3>FcgHciJbl<3>S_v<3>civflvinvlqvotvs\
ww<2>zzz<3>rwzovzhsw<3>Gch8_d8Xa<3>8JP8FL8CI<3>SCCXCAaB9<3>uA2zA\
0xA0<12>SA1QA1NA1<3>D92<3>NN7PQ8SU9<3>`fDhrI<3>UnXRm_NlcJkgFfpAa\
z<3>PJoSFlWAi_5fc0ce7_jFRoNIzb0<2>zz1zzC<2>zzz<3>jqdfo_blU<3>Mb8\
<3>LQ8KM8KJ8<2>I88H44G00<3>TA5WD6ZF7aI8eLAhMBiODjQF<3>qeBriAtm9v\
q8xu7zz5zz4zz3<4>zj4zg4zc4<3>zS5zP5zL6zI6zE6wE6tD6<6>vAIv9Kv9M<3\
>x7Sy7Uy6Wz6Yz5_<3>f5Ma5IW4E<2>_4H<3>P3DN2CK2A<3>805G0BO0G<3>g0U\
l0Xq0`v0d<2>y0fz0gy0hx0iw1k
}


------------------------frm------------------------

frm:NrotT {
tmp = pi/180, p = real(p2)
rotXax = exp(flip(real(p1)*tmp))
rotYax = exp(flip(imag(p1)*tmp))
X = real(pixel), Y = imag(pixel)
a = real(rotXax), b = imag(rotXax)
c = real(rotYax), d = imag(rotYax)
cx = c*X - a*d*p - b*d*Y
cy = a*c*p + d*X + b*c*Y
cz = a*Y - b*p
x1 = 0, y1 = 0, z1 = 0:
f = sqr(x1) + 2*y1*z1 + cx
g = sqr(z1) + 2*x1*y1 + cy
h = sqr(y1) + 2*x1*z1 + cz
x1 = f, y1 = g, z1 = h
z = sqr(x1)+sqr(y1)+sqr(z1)
z < 100 }

NrotTC {
tmp = pi/180, p = real(p2)
rotXax = exp(flip(real(p1)*tmp))
rotYax = exp(flip(imag(p1)*tmp))
X = real(pixel), Y = imag(pixel)
a = real(rotXax), b = imag(rotXax)
c = real(rotYax), d = imag(rotYax)
cx = c*X - a*d*p - b*d*Y
cy = a*c*p + d*X + b*c*Y
cz = a*Y - b*p
x1 = 0, y1 = 0, z1 = 0:
f = sqr(x1) + 2*y1*z1 + cx
g = sqr(z1) + 2*x1*y1 + cy
h = sqr(y1) + 2*x1*z1 + cz
x1 = g, y1 = f, z1 = h
z = x1^2 + y1^2 + z1^2
z < 100 }

----------------------end Par----------------------



Russell Walsmith
russw@lycos.com