Tony Hanmer wrote:
All the recent developments with orbital rendering in Fractint - for which I say well done, beautiful, some pars from me to follow soon - also makes me think of another fractal type composed of curved lines, namely Klienian Groups, e.g. as at http://klein.math.okstate.edu/IndrasPearls/ It would be great to have these incorporated into Fractint.
Such as the example below? Sadly it suffers from the same shortcomings as inverse iteration of Julias - the orbit points don't cover the whole fractal evenly, which calls for a way to check if a pixel is visited too often and switch to one of the other transformations accordingly (as can be done for the Julia_inverse type). Ah, yes - don't wait for the picture to finish, it takes a long time... Regards, Gerald ----------------- Begin .par (and frm:) -------------------- KleinGroupTest {;Kleinian Group for passes=o ; reset=2004 type=formula formulafile=fractint.frm formulaname=KleinianParab passes=o center-mag=0/0/0.9/1/-90/3.88578058618804789e-016 params=2/0/1.95/0.04/1/1234 float=y maxiter=600 inside=255 periodicity=0 orbitdelay=100 colors=@gamma1.map } frm:KleinianParab {;after "Indra's Pearls" ;by Mumford, Series und Wright ;Two-generator-group, commutator trace fixed to -2 ;------------------------------------- ;p1 : Trace a ;p2 : Trace b ;p3r: Trace ab choice (0|1) ;p3i: Seed for random number generator ;------------------------------------- ; srand(imag(p3)) ; rt = sqrt(sqr(p1*p2)-(sqr(p1)+sqr(p2))*4) IF (p3) tab = (p1*p2-rt)/2 ELSE tab = (p1*p2+rt)/2 ENDIF rt = (tab-2)*p2/((p2+(0,2))*tab-2*p1) ; a14 = p1/2 a2 = (p1*tab-2*p2+(0,4))/((2*tab+4)*rt) a3 = (p1*tab-2*p2-(0,4))*rt/(2*tab-4) ; b23 = p2/2 b1 = b23-(0,1) b4 = b23+(0,1) ; last = floor(imag(rand)*4) z = pixel: IF (last == 0) IF (rand > 0.67) z = (a14*z+a2)/(a3*z+a14) ELSEIF (rand > 0.33) z = (b1*z+b23)/(b23*z+b4) last = 1 ELSE z = (b4*z-b23)/(b1-b23*z) last = 3 ENDIF ELSEIF (last == 1) IF (rand > 0.67) z = (a14*z+a2)/(a3*z+a14) last = 0 ELSEIF (rand > 0.33) z = (b1*z+b23)/(b23*z+b4) ELSE z = (a14*z-a2)/(a14-a3*z) last = 2 ENDIF ELSEIF (last == 2) IF (rand > 0.67) z = (b1*z+b23)/(b23*z+b4) last = 1 ELSEIF (rand > 0.33) z = (a14*z-a2)/(a14-a3*z) ELSE z = (b4*z-b23)/(b1-b23*z) last = 3 ENDIF ELSE IF (rand > 0.67) z = (a14*z+a2)/(a3*z+a14) last = 0 ELSEIF (rand > 0.33) z = (a14*z-a2)/(a14-a3*z) last = 2 ELSE z = (b4*z-b23)/(b1-b23*z) ENDIF ENDIF last == last } ----------------- End .par (and frm:) --------------------