From: "Morgan L. Owens" Sent: Monday, May 20, 2002 9:38 AM [Way too much interesting stuff (Circles formulas) snipped...]
...and while we're on the subject of Fractint formulae, can someone explain why it is that it's still possible after all this time for BoF to still contain things that haven't been reproduced in Fractint yet? You'd have thought that the two-dimensional Newton systems described therein would've been:
twodnewton{ 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 }
(E.g. h=0.5, m=2)
Arrgh! Another chance to worldwide fame missed! ;-) As it happens, this - and the Voltera-Lottka system - where among the first formulas I tried when I first met Fractint in the German language edition of "Fractal Creations" back in '92. ("What? There are really fractals they *haven't* implemented?") Well, publish or perish... 8-/ (BTW, a Newton formula of a system of 2 real equations - not this one - was once published by Sylvie Gallet.) Concerning your "Circles" formulas: Some time ago I stumbled over "Wada Basins in Chaotic Scattering" and the following websites: http://webs1152.im1.net/~dsweet/Spheres/ ...and on Paul Bourke's site: http://astronomy.swin.edu.au/~pbourke/fractals/wada/ Regards, Gerald P.S. So here ("Who needs POV-Ray?") are the respective Fractint- formulas: ------------------------- WADA.FRM ---------------------------- TetraSpheres {;Four mirrored spheres at the corners of a ;tetrahedron, each touching the other three. ;( Viewing direction is positive z ) ;colouring: number of iterations ;periodicity=no ;p1r: z-depth of viewing ray's start (try -1.5 or 0.5) ; ;Spheres' centers xy1 = (-1,-0.577350269189625) ;(-1, -1/sqrt(3)) xy2 = (1,-0.577350269189625) ;( 1, -1/sqrt(3)) xy3 = (0,1.15470053837925) ;( 0, 2/sqrt(3)) ;xy4 = (0,0) z123 = -0.408248290463863 ;(-1/sqrt(6), 0) z4 = 1.22474487139159 ;( sqrt(3/2), 0) pxy = pixel, pz = real(p1) vxy = 0, vz = 1: isect = 0, dist = 999999 dz = z123 - pz, vzdz = vz*dz, dzmod = |dz| dxy = xy1 - pxy tmp1 = real(vxy)*real(dxy) + imag(vxy)*imag(dxy) + vzdz IF (tmp1 > 0) tmp2 = |dxy| + dzmod - |tmp1| IF (tmp2 < 1) dist = tmp1 - sqrt(1-tmp2) xy0 = xy1, z0 = z123 isect = 1 ENDIF ENDIF dxy = xy2 - pxy tmp1 = real(vxy)*real(dxy) + imag(vxy)*imag(dxy) + vzdz IF (tmp1 > 0) tmp2 = |dxy| + dzmod - |tmp1| IF (tmp2 < 1) tmp1 = tmp1 - sqrt(1-tmp2) IF (tmp1 < dist) dist = tmp1 xy0 = xy2, z0 = z123 isect = 1 ENDIF ENDIF ENDIF dxy = xy3 - pxy tmp1 = real(vxy)*real(dxy) + imag(vxy)*imag(dxy) + vzdz IF (tmp1 > 0) tmp2 = |dxy| + dzmod - |tmp1| IF (tmp2 < 1) tmp1 = tmp1 - sqrt(1-tmp2) IF (tmp1 < dist) dist = tmp1 xy0 = xy3, z0 = z123 isect = 1 ENDIF ENDIF ENDIF dxy = -pxy, dz = z4 - pz tmp1 = real(vxy)*real(dxy) + imag(vxy)*imag(dxy) + vz*dz IF (tmp1 > 0) tmp2 = |dxy| + |dz| - |tmp1| IF (tmp2 < 1) tmp1 = tmp1 - sqrt(1-tmp2) IF (tmp1 < dist) dist = tmp1 xy0 = 0, z0 = z4 isect = 1 ENDIF ENDIF ENDIF IF (isect) pxy = pxy + dist*vxy, pz = pz + dist*vz nxy = pxy - xy0, nz = pz - z0 tmp1 = sqrt(|nxy|+|nz|), nxy = nxy/tmp1, nz = nz/tmp1 tmp1 = (real(vxy)*real(nxy)+imag(vxy)*imag(nxy)+vz*nz)*2 vxy = vxy - tmp1*nxy, vz = vz - tmp1*nz ;tmp1 = sqrt(|vxy|+|vz|), vxy = vxy/tmp1, vz = vz/tmp1 ENDIF isect == 1 } TetraSpheresBas {;Four mirrored spheres at the corners of a ;tetrahedron, each touching the other three. ;( Viewing direction is positive z ) ;colouring: on which side of the tetrahedron the ray escapes ;outside=summ, periodicity=no ;p1r: z-depth of viewing ray's start (try -1.5 or 0.5) ; ;Spheres' centers xy1 = (-1,-0.577350269189625) ;(-1, -1/sqrt(3)) xy2 = (1,-0.577350269189625) ;( 1, -1/sqrt(3)) xy3 = (0,1.15470053837925) ;( 0, 2/sqrt(3)) ;xy4 = (0,0) z123 = -0.408248290463863 ;(-1/sqrt(6), 0) z4 = 1.22474487139159 ;( sqrt(3/2), 0) ;Unit vectors towards tetrahedron's sides e1xy = (0.816496580927725,0.816496580927725) ;(sqrt(2/3),sqrt(2/3)) e2xy = (-0.816496580927725,0.816496580927725);(-sqrt(2/3), sqrt(2/3)) e3xy = (0,-0.942809041582067) ;(0,-2*sqrt(2)/3) ;e4xy = (0,0) ;e123z = (1/3, 0) ;e4z = (-1, 0) pxy = pixel, pz = real(p1) vxy = 0, vz = j = 1: isect = 0, dist = 999999 dz = z123 - pz, vzdz = vz*dz, dzmod = |dz| dxy = xy1 - pxy tmp1 = real(vxy)*real(dxy) + imag(vxy)*imag(dxy) + vzdz IF (tmp1 > 0) tmp2 = |dxy| + dzmod - |tmp1| IF (tmp2 < 1) dist = tmp1 - sqrt(1-tmp2) xy0 = xy1, z0 = z123 isect = 1 ENDIF ENDIF dxy = xy2 - pxy tmp1 = real(vxy)*real(dxy) + imag(vxy)*imag(dxy) + vzdz IF (tmp1 > 0) tmp2 = |dxy| + dzmod - |tmp1| IF (tmp2 < 1) tmp1 = tmp1 - sqrt(1-tmp2) IF (tmp1 < dist) dist = tmp1 xy0 = xy2, z0 = z123 isect = 1 ENDIF ENDIF ENDIF dxy = xy3 - pxy tmp1 = real(vxy)*real(dxy) + imag(vxy)*imag(dxy) + vzdz IF (tmp1 > 0) tmp2 = |dxy| + dzmod - |tmp1| IF (tmp2 < 1) tmp1 = tmp1 - sqrt(1-tmp2) IF (tmp1 < dist) dist = tmp1 xy0 = xy3, z0 = z123 isect = 1 ENDIF ENDIF ENDIF dxy = -pxy, dz = z4 - pz tmp1 = real(vxy)*real(dxy) + imag(vxy)*imag(dxy) + vz*dz IF (tmp1 > 0) tmp2 = |dxy| + |dz| - |tmp1| IF (tmp2 < 1) tmp1 = tmp1 - sqrt(1-tmp2) IF (tmp1 < dist) dist = tmp1 xy0 = 0, z0 = z4 isect = 1 ENDIF ENDIF ENDIF IF (isect) pxy = pxy + dist*vxy, pz = pz + dist*vz nxy = pxy - xy0, nz = pz - z0 tmp1 = sqrt(|nxy|+|nz|), nxy = nxy/tmp1, nz = nz/tmp1 tmp1 = (real(vxy)*real(nxy)+imag(vxy)*imag(nxy)+vz*nz)*2 vxy = vxy - tmp1*nxy, vz = vz - tmp1*nz ;tmp1 = sqrt(|vxy|+|vz|), vxy = vxy/tmp1, vz = vz/tmp1 ELSE col = 5 dist = 999999 pz3 = pz/3, vz3 = vz/3 ;pz * e123z, vz * e123z tmp1 = real(vxy)*real(e1xy) + imag(vxy)*imag(e1xy) + vz3 IF (tmp1 > 0) tmp2 = real(pxy)*real(e1xy) + imag(pxy)*imag(e1xy) + pz3 dist = (1.5-tmp2)/tmp1 col = 1 ENDIF tmp1 = real(vxy)*real(e2xy) + imag(vxy)*imag(e2xy) + vz3 IF (tmp1 > 0) tmp2 = real(pxy)*real(e2xy) + imag(pxy)*imag(e2xy) + pz3 tmp1 = (1.5-tmp2)/tmp1 IF (tmp1 < dist) dist = tmp1 col = 2 ENDIF ENDIF tmp1 = real(vxy)*real(e3xy) + imag(vxy)*imag(e3xy) + vz3 IF (tmp1 > 0) tmp2 = real(pxy)*real(e3xy) + imag(pxy)*imag(e3xy) + pz3 tmp1 = (1.5-tmp2)/tmp1 IF (tmp1 < dist) dist = tmp1 col = 3 ENDIF ENDIF IF (vz < 0) IF ((-1.5-pz)/vz < dist) col = 4 ENDIF ENDIF z = col - j ENDIF j = j + 1 isect == 1 } ---------------------------------------------------------------