ldm-ThingamajigsII { ; Dennis Magar, September 28, 2001 ; A reworking of "Thingamajigs" with many added "Morph" ; parameters. The original "Thingamajigs" shapes can ; be reproduced by unchecking the "Morph -> Morph II" ; checkbox under "Morph Parameters". ; ; When "Morph II" is activated by default only ; "Morph function Z1" is active; you must set ; "Morph function Z2" & Z3 to some function other ; than "zero" to activate them when they appear ; as the appropriate Morph choice is selected. ; ; When "Morph II" is active there is also the possibility ; of choosing the variable type for Z1-Z3 in any of the ; three positions where that secondary Z expression appears, ; via the "Z1[2,3]Type" parameters. ; ; This version by Toby Marshall, 12 Apr. 2008 ; Multitudinous thanks to Dennis Magar for ; allowing me to publish it :-) ; version 1.4 ; version 1.5, added "Extra Textures". Thanks to ; Michèle Dessureault, Damien M. Jones and Andreas ; Lober for allowing their code to be used. ; version 1.6 ,added "Geometrix" texturing based on ; code by Dennis Magar. ; version 1.61, optimized the Morph code and added ; the "Morph -> Morph II" checkbox-- also a few ; extra enhancements to the fBm, Geometrix ; and Additional textures. ; version 1.7, added lots of params and functions that ; relate to how X and Y are determined and processed. ; Also added some params and a function that change ; how the gradient is mapped in the coloring modes. ; version 1.71, added some new bells and whistles to ; the fBm texture section. Check the hints... ; version 1.8, added 'First' and 'Last' trapping modes ; and a 'Width' parameter to vary the element widths. ; version 1.9, added "Average" and "Sum" trapping modes ; and an "Edge Definition" parameter. ; version 2.0, added "limited iterations"; many thanks ; to Damien M. Jones for letting me use this code ; of his. ; version 2.1, added a pattern repeat param to the ; limited iter code, adapted from Ron Barnett. ; version 2.2, added more limited iter code. ; version 2.3, rationalized and standardized ; limited iter code. ; init: int i = 0 int ti = 0 int sn = 1 if @m % 2 == 1 sn = -1 endif float vsa = sn*@sa/10 float vsb = @sb/10 float rsy = (real(@syc)-1) float isy = imag(@syc) float zz = 0 float md = 0 float dist = 1e20 if @disType == 3 || @disType == 4 || @disType == 5 dist = 0 endif float dave = 0 float dsum = 0 float distance = 0 float rn = abs(real(#random)*@r) float tmp = 0 float t2 = 0 float scv = 0 complex avz = (0,0) complex tz = (0,0) complex z = (0,0) float ta = @v1 float trl = trunc(@is) if trl == 0 trl = 1e20 endif float ico = @sk float icd = abs(ico)-trunc(abs(ico)) float icm = 0 if ico <= 0 icm = trunc(abs(ico)) ico = ico + 1e7 endif ico = ico - 1 float td = @tl w = 0 ww = 0 float dis = (@is - trunc(@is))*10 if dis == 0 dis = 1 endif float x = 0 float y = 0 float tst2 = 0 float tst4 = 0 complex fc = (0,0) float ang = 0 float a2 = 0 float g1 = 0 complex gc = (0,0) bool sol = false float a = 0 complex z1 = (0,0) complex z2 = (0,0) complex z3 = (0,0) complex z4 = (0,0) complex z1p = (0,0) complex z1q = (0,0) complex qw = (0,0) complex er = (0,0) complex ty = (0,0) float t3 = 0 float tx = abs(@tpp) float a2a = 0 complex tzz = (0,0) float ct = abs(@tcc*1000) float tmp = 0 float rnn = real(#random) float texture = 0 complex p = (0,0) complex pfb = (0,0) float xx =0 float yy =0 float ddd = 0 float texture_rnd = 0 float texture_dec = 0 float texture_fbm = 0 float texture_gna = 0 float texture_tr = 0 float pd = 0 complex tz2 = (0,0) complex ptr = (0,0) float frfr = 0 float fifi = 0 float zzzz = 0 float r0r0 = 0 float i0i0 = 0 float r1r1 = 0 float i1i1 = 0 float azaz = 0 float bzbz = 0 float czcz = 0 float dzdz = 0 float zaza = 0 float avav = 1 float xbxb = 1 float za = 0 complex z_values[#maxiter+1] complex zzt = (0,0) complex xb = (0,0) complex nuvar = 0 bool trapped = false int ii = 0 bool trapped = false bool trapping = false float fiter = 0 float patnum = 0 loop: complex z1 = #z if @tha2 == false qw = @nufunc(z1-@tw)^@exp3 er = @nufunc2((z1-@tw2)^@exp1) ty = @nufunc3((z1-@tw3)^@exp2) if @change == "1" z1 = @nufunc(z1-@tw)^@exp1 elseif @change == "2" z1 = qw+er elseif @change == "3" z1 = qw-er elseif @change == "4" z1 = qw*er elseif @change == "5" z1 = qw/er elseif @change == "6" z1 = qw^er elseif @change == "7" if @op == "+" z1 = qw+(er+ty) elseif @op == "-" z1 = qw+(er-ty) elseif @op == "*" z1 = qw+(er*ty) elseif @op == "/" z1 = qw+(er/ty) elseif @op == "^" z1 = qw+(er^ty) endif elseif @change == "8" if @op == "+" z1 = qw-(er+ty) elseif @op == "-" z1 = qw-(er-ty) elseif @op == "*" z1 = qw-(er*ty) elseif @op == "/" z1 = qw-(er/ty) elseif @op == "^" z1 = qw-(er^ty) endif elseif @change == "9" if @op == "+" z1 = qw*(er+ty) elseif @op == "-" z1 = qw*(er-ty) elseif @op == "*" z1 = qw*(er*ty) elseif @op == "/" z1 = qw*(er/ty) elseif @op == "^" z1 = qw*(er^ty) endif elseif @change == "10" if @op == "+" z1 = qw/(er+ty) elseif @op == "-" z1 = qw/(er-ty) elseif @op == "*" z1 = qw/(er*ty) elseif @op == "/" z1 = qw/(er/ty) elseif @op == "^" z1 = qw/(er^ty) endif elseif @change == "11" if @op == "+" z1 = qw^(er+ty) elseif @op == "-" z1 = qw^(er-ty) elseif @op == "*" z1 = qw^(er*ty) elseif @op == "/" z1 = qw^(er/ty) elseif @op == "^" z1 = qw^(er^ty) endif endif else if @zchange1 == "|z|" z2 = |z1| elseif @zchange1 == "atan2(z)" z2 = atan2(z1) elseif @zchange1 == "real(z)" z2 = real(z1) elseif @zchange1 == "imag(z)" z2 = imag(z1) endif if @zchange2 == "|z|" z3 = |z1| elseif @zchange2 == "atan2(z)" z3 = atan2(z1) elseif @zchange2 == "real(z)" z3 = real(z1) elseif @zchange2 == "imag(z)" z3 = imag(z1) endif if @zchange3 == "|z|" z4 = |z1| elseif @zchange3 == "atan2(z)" z4 = atan2(z1) elseif @zchange3 == "real(z)" z4 = real(z1) elseif @zchange3 == "imag(z)" z4 = imag(z1) endif aa = @nufunc((z1-@tw)+@nufunc4(z2-@tw4)^@exp4) bb = @nufunc((z1-@tw)-@nufunc4(z2-@tw4)^@exp4) cc = @nufunc4((z2-@tw4)^@exp4-@nufunc(z1-@tw)) ff = real((z3-@tw5)^@exp5) dd = @nufunc5(ff) jj = (z4-@tw6) kk = (z1-@tw2) oo = (z1-@tw3) gg = @nufunc2(kk) hh = @nufunc6(jj)^@exp6 pp = @nufunc3(oo) if @mmode == "z+|z|" nuvar = aa elseif @mmode == "z-|z|" nuvar = bb elseif @mmode == "|z|-z" nuvar = cc endif if @change == "1" z1 = nuvar^@exp1 elseif @change == "2" if @mmode2 == "z+|z|" z1 = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif elseif @change == "3" if @mmode2 == "z+|z|" z1 = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif elseif @change == "4" if @mmode2 == "z+|z|" z1 = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif elseif @change == "5" if @mmode2 == "z+|z|" z1 = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif elseif @change == "6" if @mmode2 == "z+|z|" z1 = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif elseif @change == "7" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "8" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "9" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "10" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "11" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif endif endif zc = @fn8(z1) float s1 = cabs(z1) if @follow == true if i >= @skip && i < @max if @ver < 2.3 if @reverse if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif patnum = patnum + 1 else ; new version if @reverse == false if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif if @pattern != 0 patnum = patnum + 1 endif endif if(@trapalliterations == false || trapping) if (@m > 3 && @m < 12) || @m > 16 || @fl == 4 \ || @fl == 6 || @fl > 8 || @tt == 5 || @tt == 6 gc = @fn3(@fn1(@fn2(z1))) a2 = atan2(gc) g1 = cabs(gc) endif if @fl == 4 || @fl > 8 || @m == 20 \ || (@m > 7 && @m < 12) fc = @fn3(@fn1(real(z1))+@fn2(imag(z1))) tst4 = abs((cabs(fc)-g1)/s1) endif if @m == 17 || @m == 22 tst2 = abs((a2-s1)/g1) tst4 = abs((cabs(fc)-g1)/s1) endif float zr = real(zc) float zi = imag(zc) if @pc == true float d = sqrt(sqr(zr)+sqr(zi)) if @pcf == true a = atan2(zc) else if zr == 0 a = 0 else a = atan2(zi/zr) endif endif if a < 0 a = a + 2 * #pi endif zr = d zi = a endif if @fl == 3 || @fl == 7 || @tf == true \ || @m == 16 || @r < 0 ang = atan(zi/(zr+1e-20)) endif int ii = i if @is < 0 ii = -ii endif if (@fl == 0) ;a zz = abs(cabs(@fn3(abs(@fn1(zr)) \ +(@fn3(abs(@fn2(zi)))))+@vc)) elseif (@fl == 1) ;b zz = cabs(@fn8(@fn3(@fn1(real(z1))) \ +@vc+@fn3(flip(@fn2(imag(z1)))))) elseif (@fl == 2) ;c zz = abs(cabs(@fn3(@vc+abs(@fn1(zr)) \ + recip(@fn3(abs(@fn2(zi)))))))^.33 elseif (@fl == 3) ;d zz = real(@fn3(abs(@fn1(zr)) \ /(@fn3(abs(@fn2(zi)))))+@vc)*i*ang elseif (@fl == 4) ;e zz = abs(cabs(@fn8(fc+gc)/zc+@vc)) elseif (@fl == 5) ;f zz = abs(cabs(recip(@fn3(zc+@vc)))) elseif (@fl == 6) ;g zz = cabs(@fn3(@fn1(abs((g1-zr) \ /(g1-zi))+@vc))) elseif (@fl == 7) ;h zz =(cabs(@fn8(atan(@fn3(abs(@fn1(zr)+@vc) \ /(@fn3(abs(@fn2(zi^2))))))))*ang) elseif (@fl == 8) ;i zz = real(@fn3(abs(@fn1(zr) \ -@fn2(zi)+@vc)))^.33 elseif (@fl == 9) ;j zz = cabs(@fn8(abs(fc-gc+@vc)))^.33 elseif (@fl == 10) ;k zz = cabs(@fn8(@fn3(abs(@fn1(g1) \ +@vc - @fn2(a2))))) elseif (@fl == 11) ;l zz = abs(cabs(@fn8(fc-gc)/fc+@vc)) elseif (@fl == 12) ;m zz = cabs(@fn8(acos(@fn3(abs(@fn1(zr) \ +@vc - @fn2(g1)))))) endif if @m == 19 || @cm == 7 if (zz > md) && ii < trl md = zz endif endif if @disType == "Closest" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < dist && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "First" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < @threshold && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = zz * dis+ @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "Last" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < @threshold && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl && !trapped md = zz ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "Average" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if @avgflv == true if @mode_change == 0 dsum = zz + (dsum) dave = dsum/(i+1) elseif @mode_change == 1 dsum = cabs(cotanh(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 2 dsum = cabs(log(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 3 dsum = |log(zz +(dsum))| dave = dsum/(i+1) dave = |sqrt(dave)| elseif @mode_change == 4 dsum = |atan(zz +(dsum))| dave = dsum/(i+1) dave = |dave| elseif @mode_change == 5 dsum = |tanh(zz +(dsum))| dave = dsum/(i+1) dave = |dave| elseif @mode_change == 6 dsum = cabs(asin(zz +(dsum))) dave = dsum/(i+1) dave = cabs(dave) elseif @mode_change == 7 dsum = cabs(sqrt(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 8 dsum = cabs(cos(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 9 dsum = cabs(recip(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 10 dsum = |recip(zz +(dsum))| dave = dsum/(i+1) dave = |sqrt(dave)| elseif @mode_change == 11 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 12 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(log(dave)) elseif @mode_change == 13 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(atanh(dave)) elseif @mode_change == 14 dsum = cabs(round(zz +(dsum))) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 15 dsum = cabs(trunc(zz +(dsum))) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 16 dsum = cabs(round(zz +(dsum))) dave = dsum/(i+1) dave = cabs(log(dave)) elseif @mode_change == 17 dsum = cabs(trunc(zz +(dsum))) dave = dsum/(i+1) dave = cabs(log(dave)) endif else dsum = zz +(dsum) dave = dsum/(i+1) if @mode_change == 0 dsum = zz + (dsum) elseif @mode_change == 1 dsum = cabs(cotanh(zz +(dsum))) elseif @mode_change == 2 dsum = cabs(log(zz +(dsum))) elseif @mode_change == 3 dsum = |log(zz +(dsum))| dave = |sqrt(dave)| elseif @mode_change == 4 dsum = |atan(zz +(dsum))| dave = |dave| elseif @mode_change == 5 dsum = |tanh(zz +(dsum))| dave = |dave| elseif @mode_change == 6 dsum = cabs(asin(zz +(dsum))) dave = cabs(dave) elseif @mode_change == 7 dsum = cabs(sqrt(zz +(dsum))) elseif @mode_change == 8 dsum = cabs(cos(zz +(dsum))) elseif @mode_change == 9 dsum = cabs(recip(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 10 dsum = |recip(zz +(dsum))| dave = |sqrt(dave)| elseif @mode_change == 11 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 12 dsum = cabs(zz +(dsum)) dave = cabs(log(dave)) elseif @mode_change == 13 dsum = cabs(zz +(dsum)) dave = cabs(atanh(dave)) elseif @mode_change == 14 dsum = cabs(round(zz +(dsum))) dave = cabs(recip(dave)) elseif @mode_change == 15 dsum = cabs(trunc(zz +(dsum))) dave = cabs(recip(dave)) elseif @mode_change == 16 dsum = cabs(round(zz +(dsum))) dave = cabs(log(dave)) elseif @mode_change == 17 dsum = cabs(trunc(zz +(dsum))) dave = cabs(log(dave)) endif endif if zz < @threshold && ii < trl ti = i+1 dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "Sum" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < @threshold && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "Sum Outline" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < @threshold && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif endif endif endif elseif @follow == false if @ver < 2.3 if @reverse if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif patnum = patnum + 1 else ; new version if @reverse == false if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif if @pattern != 0 patnum = patnum + 1 endif endif if(@trapalliterations == false || trapping) if i >= @skip && i < @max if (@m > 3 && @m < 12) || @m > 16 || @fl == 4 \ || @fl == 6 || @fl > 8 || @tt == 5 || @tt == 6 gc = @fn3(@fn1(@fn2(z1))) a2 = atan2(gc) g1 = cabs(gc) endif if @fl == 4 || @fl > 8 || @m == 20 \ || (@m > 7 && @m < 12) fc = @fn3(@fn1(real(z1))+@fn2(imag(z1))) tst4 = abs((cabs(fc)-g1)/s1) endif if @m == 17 || @m == 22 tst2 = abs((a2-s1)/g1) tst4 = abs((cabs(fc)-g1)/s1) endif float zr = real(zc) float zi = imag(zc) if @pc == true float d = sqrt(sqr(zr)+sqr(zi)) if @pcf == true a = atan2(zc) else if zr == 0 a = 0 else a = atan2(zi/zr) endif endif if a < 0 a = a + 2 * #pi endif zr = d zi = a endif if @fl == 3 || @fl == 7 || @tf == true \ || @m == 16 || @r < 0 ang = atan(zi/(zr+1e-20)) endif int ii = i if @is < 0 ii = -ii endif if (@fl == 0) ;a zz = abs(cabs(@fn3(abs(@fn1(zr)) \ +(@fn3(abs(@fn2(zi)))))+@vc)) elseif (@fl == 1) ;b zz = cabs(@fn8(@fn3(@fn1(real(z1))) \ +@vc+@fn3(flip(@fn2(imag(z1)))))) elseif (@fl == 2) ;c zz = abs(cabs(@fn3(@vc+abs(@fn1(zr)) \ + recip(@fn3(abs(@fn2(zi)))))))^.33 elseif (@fl == 3) ;d zz = real(@fn3(abs(@fn1(zr)) \ /(@fn3(abs(@fn2(zi)))))+@vc)*i*ang elseif (@fl == 4) ;e zz = abs(cabs(@fn8(fc+gc)/zc+@vc)) elseif (@fl == 5) ;f zz = abs(cabs(recip(@fn3(zc+@vc)))) elseif (@fl == 6) ;g zz = cabs(@fn3(@fn1(abs((g1-zr) \ /(g1-zi))+@vc))) elseif (@fl == 7) ;h zz =(cabs(@fn8(atan(@fn3(abs(@fn1(zr)+@vc) \ /(@fn3(abs(@fn2(zi^2))))))))*ang) elseif (@fl == 8) ;i zz = real(@fn3(abs(@fn1(zr) \ -@fn2(zi)+@vc)))^.33 elseif (@fl == 9) ;j zz = cabs(@fn8(abs(fc-gc+@vc)))^.33 elseif (@fl == 10) ;k zz = cabs(@fn8(@fn3(abs(@fn1(g1) \ +@vc - @fn2(a2))))) elseif (@fl == 11) ;l zz = abs(cabs(@fn8(fc-gc)/fc+@vc)) elseif (@fl == 12) ;m zz = cabs(@fn8(acos(@fn3(abs(@fn1(zr) \ +@vc - @fn2(g1)))))) endif if @m == 19 || @cm == 7 if (zz > md) && ii < trl md = zz endif endif if @disType == "Closest" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < dist && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "First" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < @threshold && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = zz * dis+ @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "Last" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < @threshold && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl && !trapped md = zz ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl && !trapped ti = i dist = zz * dis + @edge/3 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "Average" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if @avgflv == true if @mode_change == 0 dsum = zz + (dsum) dave = dsum/(i+1) elseif @mode_change == 1 dsum = cabs(cotanh(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 2 dsum = cabs(log(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 3 dsum = |log(zz +(dsum))| dave = dsum/(i+1) dave = |sqrt(dave)| elseif @mode_change == 4 dsum = |atan(zz +(dsum))| dave = dsum/(i+1) dave = |dave| elseif @mode_change == 5 dsum = |tanh(zz +(dsum))| dave = dsum/(i+1) dave = |dave| elseif @mode_change == 6 dsum = cabs(asin(zz +(dsum))) dave = dsum/(i+1) dave = cabs(dave) elseif @mode_change == 7 dsum = cabs(sqrt(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 8 dsum = cabs(cos(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 9 dsum = cabs(recip(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 10 dsum = |recip(zz +(dsum))| dave = dsum/(i+1) dave = |sqrt(dave)| elseif @mode_change == 11 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 12 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(log(dave)) elseif @mode_change == 13 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(atanh(dave)) elseif @mode_change == 14 dsum = cabs(round(zz +(dsum))) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 15 dsum = cabs(trunc(zz +(dsum))) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 16 dsum = cabs(round(zz +(dsum))) dave = dsum/(i+1) dave = cabs(log(dave)) elseif @mode_change == 17 dsum = cabs(trunc(zz +(dsum))) dave = dsum/(i+1) dave = cabs(log(dave)) endif else dsum = zz +(dsum) dave = dsum/(i+1) if @mode_change == 0 dsum = zz + (dsum) elseif @mode_change == 1 dsum = cabs(cotanh(zz +(dsum))) elseif @mode_change == 2 dsum = cabs(log(zz +(dsum))) elseif @mode_change == 3 dsum = |log(zz +(dsum))| dave = |sqrt(dave)| elseif @mode_change == 4 dsum = |atan(zz +(dsum))| dave = |dave| elseif @mode_change == 5 dsum = |tanh(zz +(dsum))| dave = |dave| elseif @mode_change == 6 dsum = cabs(asin(zz +(dsum))) dave = cabs(dave) elseif @mode_change == 7 dsum = cabs(sqrt(zz +(dsum))) elseif @mode_change == 8 dsum = cabs(cos(zz +(dsum))) elseif @mode_change == 9 dsum = cabs(recip(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 10 dsum = |recip(zz +(dsum))| dave = |sqrt(dave)| elseif @mode_change == 11 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 12 dsum = cabs(zz +(dsum)) dave = cabs(log(dave)) elseif @mode_change == 13 dsum = cabs(zz +(dsum)) dave = cabs(atanh(dave)) elseif @mode_change == 14 dsum = cabs(round(zz +(dsum))) dave = cabs(recip(dave)) elseif @mode_change == 15 dsum = cabs(trunc(zz +(dsum))) dave = cabs(recip(dave)) elseif @mode_change == 16 dsum = cabs(round(zz +(dsum))) dave = cabs(log(dave)) elseif @mode_change == 17 dsum = cabs(trunc(zz +(dsum))) dave = cabs(log(dave)) endif endif if zz < @threshold && ii < trl ti = i+1 dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = dave * dis + @edge/3 distance = dave tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "Sum" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < @threshold && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + zz tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif elseif @disType == "Sum Outline" if @m < 14 || @m > 22 ;1-E, O,P if @m < 2 y = zr elseif @m == 2 || @m == 3 y = zi elseif @m == 4 || @m == 5 y = g1^2 elseif @m == 6 || @m == 7 y = (a2-s1)/(g1*2) elseif @m == 12 || @m == 13 y = real(@tc)/2 elseif @m == 23 || @m == 24 y = s1 else y = g1-tst4 endif ;***************************** if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if isy > 0 if @wfl == false y = y*(y - isy)/(y + isy) else y = (y - isy)/(y + isy) endif elseif isy < 0 if @wfl == false y = y * (isy+1) else y = y + isy endif endif if rsy < -1 y = y + (rsy + 1)/2 endif if @sb < 0 y = y % vsb endif tmp = @ni*(real(@fn1(y+sn*@fn2(y)*-rsy))) if @sb > 0 tmp = tmp % vsb endif x = zz - tmp + vsa ;***************************** if @opxy == "X+Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "X-Y" xb = (@fn9((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3)) elseif @opxy == "Y-X" xb = (@fn9(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3) endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zzt = cabs(@ztypeFn2(zq-xb)) else zzt = cabs(@ztypeFn2(xb+zq)) endif if @m == 10 || @m == 11 xb = -xb endif if @so == true zz = cabs(atan(zzt)) elseif @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 zz = cabs(zzt) else zz = cabs(zzt)^.1 endif if zz < @threshold && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 14) ;F if zz < dist || zz < 1 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 15) ;G if zz < dist && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 16) ;H if zz < ang && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 17) ;I if zz < tst2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 18) ;J if zz > g1 && dist > g1 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 19) ;K if zz < md && ii < trl md = zz ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 20) ;L if zz < tst4^2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 21) ;M if zz > s1^2 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif elseif (@m == 22) ;N if tst2 > tst4 && ii < trl ti = i dist = distance * dis + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z avz = avz + z1 trapped = true endif endif endif endif endif endif i = i + 1 z_values[i] = #z final: if trapped if @cm == 0 && (@m < 14 || @m > 22) && @msk == 0 && @so == false dist = dist ^ .1 endif if @im == false && dist > @msk && !(@msk == 0) #solid = true sol = true endif if @im == true && dist <= @msk && !(@msk == 0) #solid = true sol = true endif if (ti > ico || ti < icm) && @co == true || sol == true #solid = true else tmp = dist scv = abs(@sc)*200 float caz = cabs(avz) / i if (@cm == 1) tmp = real(@colorFn((ti-@tz1)*@tz2)^@tz3) * .1 elseif (@cm == 2) tmp = real(@colorFn((ti-@tz1)*@tz2)^@tz3)%@mc*.8 elseif (@cm == 3) tmp = cabs(@colorFn((tz-@tz1)*@tz2)^@tz3) elseif (@cm == 4) tmp = abs(real(@colorFn((tz-@tz1)*@tz2)^@tz3)) elseif (@cm == 5) tmp = abs(imag(@colorFn((tz-@tz1)*@tz2)^@tz3)) elseif (@cm == 6) tmp = abs(atan2(@colorFn((tz-@tz1)*@tz2)^@tz3)/pi) elseif (@cm == 7) tmp = acosh(real(@colorFn((md-@tz1)*@tz2)^@tz3))/4 elseif (@cm == 8) tmp = real(@colorFn((caz-@tz1)*@tz2)^@tz3)*1.5 elseif (@cm == 9) tmp = real(@colorFn((ti-@tz1)*@tz2)^@tz3)%imag(@tc) elseif (@cm == 10) tmp = dist endif ; -------------------------------------------------------- if @tt > 6 && !(@v1 == 0) float pw = 1 float of = 1 if @r < 0 pw = @st else of = @st endif if @tt == 9 if @r < 0 z = @fn5(@fn7(tz+@tc)) else z = @fn7(tz+@tc) endif endif if @tt == 10 z = @fn7(atanh(zc+@tc)) ta = ta * .5 endif if @tt == 11 z = @fn7(atanh(z1+@tc)) ta = ta * .5 endif if @tt == 7 z = @fn7(tz+@tc) td = 100 scv = scv * 2 ta = ta * .2 pw = pw / 10 endif if @tt == 8 z = @fn7(avz+@tc) td = 100 scv = scv * 1.5 ta = ta * .2 pw = pw / 10 endif if @r < 0 float zr = abs(real(z)/scv) else float zr = cabs(@fn5(abs(real(z))/scv)) endif if @tf == false if @r < 0 float zi = imag(z)/scv else float zi = cabs(@fn5(imag(z)))/scv endif else if @r < 0 float zi = ang/scv else float zi = cabs(@fn5(ang))/scv endif endif float rz = floor(zr) float iz = floor(zi) float az = cabs(@fn3(@fn1(rz-1) + @fn2(iz-1))) float bz = cabs(@fn3(@fn1(rz-1) + @fn2(iz+1))) float cz = cabs(@fn3(@fn1(rz+1) + @fn2(iz-1))) float dz = cabs(@fn3(@fn1(rz+1) + @fn2(iz+1))) int i = 1 zz = 0 float h = 1 repeat h = h / 2 float fr = rz + h float fi = iz + h zz = (az + bz + cz + dz + of - 1) / 4 if (zr > fr) if (zi > fi) rz = fr iz = fi az = cabs(@fn6(zz))*td/25*@ff else rz = fr cz = cabs(@fn6(zz))*td/25 endif else if (zi > fi) iz = fi bz = cabs(@fn6(zz))*td/25 else dz = cabs(@fn6(zz))*td/25 endif endif i = i + 1 until i >= 20 if ti > ico || ti < icm t2 = 0 else t2 = ((zz-trunc(zz))+rn*i)^pw*ta*10 endif endif ; --------------------------------------------------------- if (@tt == 0) if @r < 0 t2 = cabs(@fn7(rn)) else t2 = ti*icd+rn endif endif if @tt > 0 && @tt < 7 && !(@v1 == 0) px = real(#pixel)-real(#center) \ +flip(imag(#pixel)-imag(#center)) xb = abs(@vc - tz)^.05 bx = 0 scl = abs(@sc) if @tt == 1 ; Patterns 1 bx = @fn6(tz)-xb*(@ff-1) elseif @tt == 2 ; Patterns 2 if @r < 0 scl = scl * 8 bx = @fn6(exp(px))-xb*(@ff-1) else scl = scl * 2 bx = @fn6(px)-xb*(@ff-1) endif elseif @tt == 3 ; Fuzz 1 if @r < 0 bx = @fn6(#pixel) else scl = scl * 10 bx = -abs(@fn6(acosh(sin(abs(#pixel*@ff*2.5))))) endif elseif @tt == 4 ; Fuzz 2 xb = abs(@fn6(acos(@vc - avz)))^.05 scl = scl * 10 bx = -xb-abs(acosh(sin(px)*@ff)) elseif @tt == 5 ; Fuzzy Patterns 1 scl = scl * 15 if @r < 0 scl = abs(@sc) bx = g1 + flip(a2);sailing else xb = abs(@fn6(@vc - tz))^.05 bx = -abs(acosh(sin(abs(xb))*@ff)) endif elseif @tt == 6 ; Fuzzy Patterns 2 xb = abs(@fn6(@vc - gc))^.05 scl = scl * 8 bx = -xb*@ff endif if ti > ico || ti < icm bx = (ti + flip(-ti))*icd endif w = acosh(bx*10^8)*scl if @tf == true ww = @fn5(w - round(w)) else ww = @fn5(acosh(w - round(w))) endif t2 = cabs(@fn7((ww+@tc+rn))^@st)*td t2 = (t2 - trunc(t2))*@v1 endif if tx > 0 if @ztyp == "#z" tzz = ((#z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Morph z" tzz = ((z1-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trap z" tzz = ((tz-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trap #z" tzz = ((tz2-@txia1)*@txib1)^@txic1 elseif @ztyp == "Dist" tzz = ((dist-@txia1)*@txib1)^@txic1 endif if @ttt == 0 tzz = @fntx2(@fntx1(tzz))^@exad1 elseif @ttt == 1 tzz = @fntx1(real(tzz))^@exad1+@fntx2(imag(tzz))^@exad2 elseif @ttt == 2 tzz = @fntx1(real(tzz))^@exad1-@fntx2(imag(tzz))^@exad2 elseif @ttt == 3 tzz = @fntx1(real(tzz))^@exad1*@fntx2(imag(tzz))^@exad2 elseif @ttt == 4 tzz = @fntx1(imag(tzz))^@exad1-@fntx2(real(tzz))^@exad2 elseif @ttt == 5 tzz = @fntx2(@fntx1(x))^@exad1 elseif @ttt == 6 tzz = @fntx2(@fntx1(y))^@exad1 elseif @ttt == 7 tzz = @fntx1(x)^@exad1+@fntx2(y)^@exad2 elseif @ttt == 8 tzz = @fntx1(x)^@exad1-@fntx2(y)^@exad2 elseif @ttt == 9 tzz = @fntx2(y)^@exad2-@fntx1(x)^@exad1 elseif @ttt == 10 tzz = @fntx1(x)^@exad1*@fntx2(y)^@exad2 elseif @tt == 11 tzz = @fntx1(x)^@exad1/@fntx2(y)^@exad2 elseif @ttt == 12 tzz = @fntx2(y)^@exad2/@fntx1(x)^@exad1 elseif @ttt == 13 tzz = @fntx1(x)^@exad1^@fntx2(y)^@exad2 elseif @ttt == 14 tzz = @fntx2(y)^@exad1^@fntx1(x)^@exad2 elseif @ttt == 15 tzz = @fntx1(x)^@exad1+@fntx2(tzz)^@exad2 elseif @ttt == 16 tzz = @fntx1(x)^@exad1-@fntx2(tzz)^@exad2 elseif @ttt == 17 tzz = @fntx2(tzz)^@exad2-@fntx1(x)^@exad1 elseif @ttt == 18 tzz = @fntx1(x)^@exad1*@fntx2(tzz)^@exad2 elseif @ttt == 19 tzz = @fntx1(x)^@exad1/@fntx2(tzz)^@exad2 elseif @ttt == 20 tzz = @fntx2(tzz)^@exad2/@fntx1(x)^@exad1 elseif @ttt == 21 tzz = @fntx1(y)^@exad1+@fntx2(tzz)^@exad2 elseif @ttt == 22 tzz = @fntx1(y)^@exad1-@fntx2(tzz)^@exad2 elseif @ttt == 23 tzz = @fntx2(tzz)^@exad2-@fntx1(y)^@exad1 elseif @ttt == 24 tzz = @fntx1(y)^@exad1*@fntx2(tzz)^@exad2 elseif @ttt == 25 tzz = @fntx1(y)^@exad1/@fntx2(tzz)^@exad2 elseif @ttt == 26 tzz = @fntx2(tzz)^@exad2/@fntx1(y)^@exad1 endif float zrr = real(tzz)%(@tv/10)/@ts*10 float zii = imag(tzz)%(@tv/10)/@ts*10 float rzz = floor(zrr) float izz = floor(zii) if @tcc > 0 float a1a = (rzz + izz - 2)/ct float a2a = (rzz + izz + 2)/ct else float a1a = (rzz + izz - 2)%ct float a2a = (rzz + izz + 2)%ct endif float a3a = a1a float a4a = a2a i = 0 float ez = 0 float ho = 1 repeat ho = ho / 2 float frr = rzz + ho float fii = izz + ho float za = (a1a + a2a + a3a + a4a) / 4 ez = ez + za if (zrr > frr) rzz = frr if (zii > fii) izz = fii a1a = ez else a2a = ez endif else if (zii > fii) izz = fii a3a = ez else a4a = ez endif endif i = i + 1 until i >= 20 t3 = abs((za-real(@fntx3(za)))) if @add_sgn == false t3 = (za-real(@fntx3(za))) endif endif ;Random complex hasard = #random texture_rnd = 10 * @rnd * (real(hasard)+ imag(hasard)) ; fBm if (@fbmtxt != 0) r1 = (0,1) ^ (@fbmangle / 90.0) r2 = (0,1) ^ (@fbmastep / 90.0) if @ztyp4 == "#z" tzz = ((#z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Morph z" tzz = ((z1-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trap z" tzz = ((tz-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trap #z" tzz = ((tz2-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Dist" tzz = ((dist-@txia4)*@txib4)^@txic4 endif if @fbminit == 0 pfb = (@fntx9(@fntx8(tzz))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 1 pfb = (@fntx8(real(tzz))^@exad8+@fntx9(imag(tzz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 2 pfb = (@fntx8(real(tzz))^@exad8-@fntx9(imag(tzz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 3 pfb = (@fntx8(real(tzz))^@exad8*@fntx9(imag(tzz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 4 pfb = (@fntx8(imag(tzz))^@exad8-@fntx9(real(tzz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 5 pfb = (@fntx9(@fntx8(x))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 6 pfb = (@fntx9(@fntx8(y))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 7 pfb = (@fntx8(x)^@exad8+@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 8 pfb = (@fntx8(x)^@exad8-@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 9 pfb = (@fntx9(y)^@exad9-@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 10 pfb = (@fntx8(x)^@exad8*@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 11 pfb = (@fntx8(x)^@exad8/@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 12 pfb = (@fntx9(y)^@exad9/@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 13 pfb = (@fntx8(x)^@exad8^@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 14 pfb = (@fntx9(y)^@exad9^@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 15 pfb = (@fntx8(x)^@exad8+@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 16 pfb = (@fntx8(x)^@exad8-@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 17 pfb = (@fntx9(tzz)^@exad9-@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 18 pfb = (@fntx8(x)^@exad8*@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 19 pfb = (@fntx8(x)^@exad8/@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 20 pfb = (@fntx9(tzz)^@exad9/@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 21 pfb = (@fntx8(y)^@exad8+@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 22 pfb = (@fntx8(y)^@exad8-@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 23 pfb = (@fntx9(tzz)^@exad9-@fntx8(y)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 24 pfb = (@fntx8(y)^@exad8*@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 25 pfb = (@fntx8(y)^@exad8/@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 26 pfb = (@fntx9(tzz)^@exad9/@fntx8(y)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 27 pfb = (@fntx9(@fntx8(pixel))^@exad8)* @fbmscale * r1 + @fbmoffset endif float summ = 0.0 float freq = 1.0 int i = @fbmoct while (i > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = real(@fbmrfn2(@fbmrfn1(pfb))) % 256 float by0 = imag(@fbmifn2(@fbmifn1(pfb))) % 256 if (bx0 < 0) bx0 = bx0 + 256 endif if (by0 < 0) by0 = by0 + 256 endif float bx1 = (bx0 + @c) % 256 float by1 = (by0 + @d) % 256 float rx0 = real(pfb) - floor(real(pfb)) float ry0 = imag(pfb) - floor(imag(pfb)) float rx1 = rx0 - @a float ry1 = ry0 - @b float b00 = (bx0^@fbmpower % 65536 + by0)^@fbmpower % 65536 float b10 = (bx1^@fbmpower % 65536 + by0)^@fbmpower % 65536 float b01 = (bx0^@fbmpower % 65536 + by1)^@fbmpower % 65536 float b11 = (bx1^@fbmpower % 65536 + by1)^@fbmpower % 65536 float g_b00_0 = (b00)^@fbmpower*0.25 % 512 - 256 float g_b10_0 = (b10)^@fbmpower*0.25 % 512 - 256 float g_b01_0 = (b01)^@fbmpower*0.25 % 512 - 256 float g_b11_0 = (b11)^@fbmpower*0.25 % 512 - 256 float g_b00_1 = (b00+1)^@fbmpower*0.25 % 512 - 256 float g_b10_1 = (b10+1)^@fbmpower*0.25 % 512 - 256 float g_b01_1 = (b01+1)^@fbmpower*0.25 % 512 - 256 float g_b11_1 = (b11+1)^@fbmpower*0.25 % 512 - 256 float ddd = 0.0; ddd = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * ddd g_b00_1 = g_b00_1 * ddd ddd = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * ddd g_b10_1 = g_b10_1 * ddd ddd = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * ddd g_b01_1 = g_b01_1 * ddd ddd = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * ddd g_b11_1 = g_b11_1 * ddd float u1 = rx0 * g_b00_0 + ry0 * g_b00_1 float v1 = rx1 * g_b10_0 + ry0 * g_b10_1 float u2 = rx0 * g_b01_0 + ry1 * g_b01_1 float v2 = rx1 * g_b11_0 + ry1 * g_b11_1 float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float aaa = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) summ = summ + (aaa + sy*(b-aaa))*freq freq = freq * @fbmstep pfb = pfb * r2 / @fbmstep i = i - 1 endwhile texture_fbm = 10 * @fbmtxt * summ if @fbm_limit !=0 texture_fbm= texture_fbm % @fbm_limit endif if @fbm_sgn == true texture_fbm = abs(texture_fbm) endif endif ;decimal if @dectxt > 0 if @ztyp2 == "#z" tzz = ((#z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Morph z" tzz = ((z1-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap z" tzz = ((tz-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap #z" tzz = ((tz2-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Dist" tzz = ((dist-@txia2)*@txib2)^@txic2 endif if @dec_init == 0 pd = real(@fntx5(@fntx4(tzz))^@exad4) elseif @dec_init == 1 pd = real(@fntx4(real(tzz))^@exad4+@fntx5(imag(tzz))^@exad5) elseif @dec_init == 2 pd = real(@fntx4(real(tzz))^@exad4-@fntx5(imag(tzz))^@exad5) elseif @dec_init == 3 pd = real(@fntx4(real(tzz))^@exad4*@fntx5(imag(tzz))^@exad5) elseif @dec_init == 4 pd = real(@fntx4(imag(tzz))^@exad4-@fntx5(real(tzz))^@exad5) elseif @dec_init == 5 pd = real(@fntx5(@fntx4(x))^@exad4) elseif @dec_init == 6 pd = real(@fntx5(@fntx4(y))^@exad4) elseif @dec_init == 7 pd = real(@fntx4(x)^@exad4+@fntx5(y)^@exad5) elseif @dec_init == 8 pd = real(@fntx4(x)^@exad4-@fntx5(y)^@exad5) elseif @dec_init == 9 pd = real(@fntx5(y)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 10 pd = real(@fntx4(x)^@exad4*@fntx5(y)^@exad5) elseif @dec_init == 11 pd = real(@fntx4(x)^@exad4/@fntx5(y)^@exad5) elseif @dec_init == 12 pd = real(@fntx5(y)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 13 pd = real(@fntx4(x)^@exad4^@fntx5(y)^@exad5) elseif @dec_init == 14 pd = real(@fntx5(y)^@exad4^@fntx4(x)^@exad5) elseif @dec_init == 15 pd = real(@fntx4(x)^@exad4+@fntx5(tzz)^@exad5) elseif @dec_init == 16 pd = real(@fntx4(x)^@exad4-@fntx5(tzz)^@exad5) elseif @dec_init == 17 pd = real(@fntx5(tzz)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 18 pd = real(@fntx4(x)^@exad4*@fntx5(tzz)^@exad5) elseif @dec_init == 19 pd = real(@fntx4(x)^@exad4/@fntx5(tzz)^@exad5) elseif @dec_init == 20 pd = real(@fntx5(tzz)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 21 pd = real(@fntx4(y)^@exad4+@fntx5(tzz)^@exad5) elseif @dec_init == 22 pd = real(@fntx4(y)^@exad4-@fntx5(tzz)^@exad5) elseif @dec_init == 23 pd = real(@fntx5(tzz)^@exad4-@fntx4(y)^@exad5) elseif @dec_init == 24 pd = real(@fntx4(y)^@exad4*@fntx5(tzz)^@exad5) elseif @dec_init == 25 pd = real(@fntx4(y)^@exad4/@fntx5(tzz)^@exad5) elseif @dec_init == 26 pd = real(@fntx5(tzz)^@exad4/@fntx4(y)^@exad5) endif if @dec_type == 0 pd = pd-ceil(pd*@dec_scale)/@dec_scale elseif @dec_type == 1 pd = pd-floor(pd*@dec_scale)/@dec_scale elseif @dec_type == 2 pd = pd-trunc(pd*@dec_scale)/@dec_scale elseif @dec_type == 3 pd = pd-round(pd*@dec_scale)/@dec_scale elseif @dec_type == 4 pd = pd-real(@fndec(pd*@dec_scale))/@dec_scale elseif @dec_type == 5 pd = pd-round(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 6 pd = pd-round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 7 pd = pd+round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 8 pd = pd-round(pd*@dec_scale)/@dec_scale-trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 9 pd = pd-round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 10 pd = pd+round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 11 pd = pd-trunc(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 12 pd = pd-trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 13 pd = pd+trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 14 pd = pd-trunc(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 15 pd = pd-trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 16 pd = pd+trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 17 pd = pd-ceil(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 18 pd = pd-ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 19 pd = pd+ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale)/@dec_scale2 endif if @dec_size != 0 pd = pd/@dec_size endif texture_dec = @dectxt*pd if @dec_limit !=0 texture_dec= texture_dec%@dec_limit endif if @dec_sgn == true texture_dec = abs(texture_dec) endif endif texture_dec = 10 * texture_dec * @decamt if (@gnarl_amt != 0) if @ztyp3 == "#z" tzz = ((#z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Morph z" tzz = ((z1-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap z" tzz = ((tz-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap #z" tzz = ((tz2-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Dist" tzz = ((dist-@txia3)*@txib3)^@txic3 endif if @gnarl_init == 0 p = @fntx7(@fntx6(tzz))^@exad6 elseif @gnarl_init == 1 p = @fntx6(real(tzz))^@exad6+@fntx7(imag(tzz))^@exad7 elseif @gnarl_init == 2 p = @fntx6(real(tzz))^@exad6-@fntx7(imag(tzz))^@exad7 elseif @gnarl_init == 3 p = @fntx6(real(tzz))^@exad6*@fntx7(imag(tzz))^@exad7 elseif @gnarl_init == 4 p = @fntx6(imag(tzz))^@exad6-@fntx7(real(tzz))^@exad7 elseif @gnarl_init == 5 p = @fntx7(@fntx6(x))^@exad6 elseif @gnarl_init == 6 p = @fntx7(@fntx6(y))^@exad6 elseif @gnarl_init == 7 p = @fntx6(x)^@exad6+@fntx7(y)^@exad7 elseif @gnarl_init == 8 p = @fntx6(x)^@exad6-@fntx7(y)^@exad7 elseif @gnarl_init == 9 p = @fntx7(y)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 10 p = @fntx6(x)^@exad6*@fntx7(y)^@exad7 elseif @gnarl_init == 11 p = @fntx6(x)^@exad6/@fntx7(y)^@exad7 elseif @gnarl_init == 12 p = @fntx7(y)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 13 p = @fntx6(x)^@exad6^@fntx7(y)^@exad7 elseif @gnarl_init == 14 p = @fntx7(y)^@exad6^@fntx6(x)^@exad7 elseif @gnarl_init == 15 p = @fntx6(x)^@exad6+@fntx7(tzz)^@exad7 elseif @gnarl_init == 16 p = @fntx6(x)^@exad6-@fntx7(tzz)^@exad7 elseif @gnarl_init == 17 p = @fntx7(tzz)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 18 p = @fntx6(x)^@exad6*@fntx7(tzz)^@exad7 elseif @gnarl_init == 19 p = @fntx6(x)^@exad6/@fntx7(tzz)^@exad7 elseif @gnarl_init == 20 p = @fntx7(tzz)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 21 p = @fntx6(y)^@exad6+@fntx7(tzz)^@exad7 elseif @gnarl_init == 22 p = @fntx6(y)^@exad6-@fntx7(tzz)^@exad7 elseif @gnarl_init == 23 p = @fntx7(tzz)^@exad6-@fntx6(y)^@exad7 elseif @gnarl_init == 24 p = @fntx6(y)^@exad6*@fntx7(tzz)^@exad7 elseif @gnarl_init == 25 p = @fntx6(y)^@exad6/@fntx7(tzz)^@exad7 elseif @gnarl_init == 26 p = @fntx7(tzz)^@exad6/@fntx6(y)^@exad7 elseif @gnarl_init == 27 p = @fntx7(@fntx6(pixel))^@exad6 endif if @gnarl_scaling == 0 p = p-ceil(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 1 p = p-floor(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 2 p = p-trunc(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 3 p = p-round(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 4 p = p-real(@fngnarl(p*@gnarl_scale))/@gnarl_scale elseif @gnarl_scaling == 5 p = p-round(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 6 p = p-round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 7 p = p+round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 8 p = p-round(p*@gnarl_scale)/@gnarl_scale-trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 9 p = p-round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 10 p = p+round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 11 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 12 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 13 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 14 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 15 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 16 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 17 p = p-ceil(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 18 p = p-ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 19 p = p+ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale)/@gnarl_scale2 endif if @gnarl_size != 0 p = p/@gnarl_size endif xx = real(p) yy = imag(p) float xOld = 0 int iter3 = @gnarl_octaves while (iter3 > 0) iter3 = iter3-1 xOld = xx if @gnarl_form == 0 xx = xx - sin(yy + sin(yy)) yy = yy - sin(xOld + sin(xOld)) elseif @gnarl_form == 1 xx = xx - sin(yy + log(yy + cos(yy))) yy = yy - sin(xOld + log(xOld + cos(xOld))) elseif @gnarl_form == 2 xx = xx - sin(yy + cos(yy)) yy = yy - sin(xOld + cos(xOld)) elseif @gnarl_form == 3 xx = xx - sin(yy + log(yy + tan(yy))) yy = yy - sin(xOld + log(xOld + tan(xOld))) elseif @gnarl_form == 4 xx = xx - sin(yy + log(yy + sin(yy))) yy = yy - sin(xOld + log(xOld + sin(xOld))) endif endwhile if (@gnarl_type == 0) texture_gna = real(@fng(xx)) elseif (@gnarl_type == 1) texture_gna = real(@fng(yy)) elseif (@gnarl_type == 2) texture_gna = real(@fng(xx+yy)) elseif (@gnarl_type == 3) texture_gna = real(@fng(xx*yy)) elseif (@gnarl_type == 4) texture_gna = real(@fng(xx-yy)) elseif (@gnarl_type == 5) texture_gna = real(@fng(xx/yy)) elseif (@gnarl_type == 6) texture_gna = real(@fng(yy/xx)) elseif (@gnarl_type == 7) texture_gna = real(@fng(xx^yy)) elseif (@gnarl_type == 8) texture_gna = real(@fng(yy^xx)) elseif (@gnarl_type == 9) texture_gna = real(@fng(1/xx)) elseif (@gnarl_type == 10) texture_gna = real(@fng(1/yy)) elseif (@gnarl_type == 11) texture_gna = atan2(xx+1i*yy)/(2*#pi) if (texture_gna < 0) texture_gna = texture_gna + 1 endif elseif (@gnarl_type == 12) texture_gna = |xx+1i*yy| elseif (@gnarl_type == 13) texture_gna = (xx+yy+|xx+1i*yy|)/3 elseif (@gnarl_type == 14) texture_gna = (xx*yy*|xx+1i*yy|)^(1/3) endif if @gnarl_limit !=0 texture_gna= 10 * (texture_gna%@gnarl_limit) * @gnarl_amt endif endif ;geometrix if (@trtxt != 0) if @ztyp5 == "#z" tzz = ((#z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Morph z" tzz = ((z1-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap z" tzz = ((tz-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap #z" tzz = ((tz2-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Dist" tzz = ((dist-@trxia)*@trxib)^@trxic endif if @trinit == 0 ptr = (@fntx11(@fntx10(tzz))^@exad10) elseif @trinit == 1 ptr = (@fntx10(real(tzz))^@exad10+@fntx11(imag(tzz))^@exad11) elseif @trinit == 2 ptr = (@fntx10(real(tzz))^@exad10-@fntx11(imag(tzz))^@exad11) elseif @trinit == 3 ptr = (@fntx10(real(tzz))^@exad10*@fntx11(imag(tzz))^@exad11) elseif @trinit == 4 ptr = (@fntx10(imag(tzz))^@exad10-@fntx11(real(tzz))^@exad11) elseif @trinit == 5 ptr = (@fntx11(@fntx10(x))^@exad10) elseif @trinit == 6 ptr = (@fntx11(@fntx10(y))^@exad10) elseif @trinit == 7 ptr = (@fntx10(x)^@exad10+@fntx11(y)^@exad11) elseif @trinit == 8 ptr = (@fntx10(x)^@exad10-@fntx11(y)^@exad11) elseif @trinit == 9 ptr = (@fntx11(y)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 10 ptr = (@fntx10(x)^@exad10*@fntx11(y)^@exad11) elseif @trinit == 11 ptr = (@fntx10(x)^@exad10/@fntx11(y)^@exad11) elseif @trinit == 12 ptr = (@fntx11(y)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 13 ptr = (@fntx10(x)^@exad10^@fntx11(y)^@exad11) elseif @trinit == 14 ptr = (@fntx11(y)^@exad11^@fntx10(x)^@exad10) elseif @trinit == 15 ptr = (@fntx10(x)^@exad10+@fntx11(tzz)^@exad11) elseif @trinit == 16 ptr = (@fntx10(x)^@exad10-@fntx11(tzz)^@exad11) elseif @trinit == 17 ptr = (@fntx11(tzz)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 18 ptr = (@fntx10(x)^@exad10*@fntx11(tzz)^@exad11) elseif @trinit == 19 ptr = (@fntx10(x)^@exad10/@fntx11(tzz)^@exad11) elseif @trinit == 20 ptr = (@fntx11(tzz)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 21 ptr = (@fntx10(y)^@exad10+@fntx11(tzz)^@exad11) elseif @trinit == 22 ptr = (@fntx10(y)^@exad10-@fntx11(tzz)^@exad11) elseif @trinit == 23 ptr = (@fntx11(tzz)^@exad11-@fntx10(y)^@exad10) elseif @trinit == 24 ptr = (@fntx10(y)^@exad10*@fntx11(tzz)^@exad11) elseif @trinit == 25 ptr = (@fntx10(y)^@exad10/@fntx11(tzz)^@exad11) elseif @trinit == 26 ptr = (@fntx11(tzz)^@exad11/@fntx10(y)^@exad10) endif endif complex z = z_values[#numiter-1] complex z = ptr float zrzr = real(@fnzr(ptr))*@scc float zizi = imag(@fnzi(ptr))*@scc float rzrz = floor(zrzr) float iziz = floor(zizi) r0r0 = rzrz - 1 i0i0 = iziz - 1 r1r1 = rzrz + 1 i1i1 = iziz + 1 azaz = cabs(@fn1tx(r0r0) + @fn2tx(i0i0)) azaz = cabs(@fn3tx(azaz)) azaz = (azaz % @shad1 * 2) bzbz = cabs(@fn1tx(r1r1) + @fn2tx(i0i0)) bzbz = cabs(@fn3tx(bzbz)) bzbz = (bzbz % @shad2 * 2) czcz = cabs(@fn1tx(r1r1) + @fn2tx(i1i1)) czcz = cabs(@fn3tx(czcz)) czcz = (czcz % @shad3 * 2) dzdz = cabs(@fn1tx(r0r0) + @fn2tx(i1i1)) dzdz = cabs(@fn3tx(dzdz)) dzdz = (dzdz % @shad4 * 2) i = 1 repeat avav = avav / (@trp1 * 2) xbxb = xbxb / (@trp2 * 2) frfr = rzrz + avav fifi = iziz + avav zaza = (azaz + bzbz + czcz + dzdz) / (@trp3 * 4) zzzz = zzzz * xbxb + zaza if (zrzr > frfr) if (zizi > fifi) rzrz = frfr iziz = fifi azaz = zzzz else rzrz = frfr dzdz = zzzz endif else if (zizi > fifi) iziz = fifi bzbz = zzzz else czcz = zzzz endif endif i = i + 1 until i >= @freq texture_tr = (zaza-trunc(zaza)^@exp*2)*@trtxt if @geo_limit != 0 texture_tr = ((zaza-trunc(zaza)^@exp*2)% @geo_limit)*@trtxt endif if @geo_sgn == true texture_tr = abs(texture_tr) endif texture = (texture_rnd + texture_fbm + texture_dec + texture_gna \ + texture_tr)*@txamt/10000 #index = cabs(sqr(@fn4(tmp))) + t2 + texture + (tx*@txamt/100)/10 + t3*\ (tx*@txamt/100)/10 + rnn*.1*@rr*(tx*@txamt/100)/10 endif else #solid = true endif default: title = "Thingamajigs II" param ver caption = "Version" default = 2.3 visible = false endparam param m caption = "Trap Mode" enum = "1" "2" "3" "4" "5" "6" "7" "8" \ "9" "A" "B" "C" "D" "E" "F" "G" \ "H" "I" "J" "K" "L" "M" "N" "O" "P" default = 0 endparam param fl caption = "'Flavor'" enum = "A" "B" "C" "D" "E" "F" "G" "H" \ "I" "J" "K" "L" "M" default = 0 endparam param pc caption = "Polar Coordinates" hint = "Rectangular Coordinates is the default." default = false endparam param pcf caption = "Polar Coord Fix" hint = "Thanks to Mark Hammond for bringing \ this to my attention." default = false visible = @pc == true endparam int param disType caption = "Trapping Type" enum = "Closest""First""Last""Average""Sum""Sum Outline" default = 0 endparam float param threshold caption = "Element Width" default = 1.0 hint = "Determines the width of the trapped elements \ using any trapping type except 'Closest'" visible = @disType != 0 endparam int param mode_change caption = "Avg. Flavor" enum = "Normal""1""2""3""4""5""6""7""8""9""10""11""12""13""14""15""16""17" default = 1 hint = "Changes the gradient as applied to the 'Average' trap mode. \ some differences are subtle. You may need to change your \ gradient for best effect" visible = @disType == 3 endparam bool param avgflv caption = "Change Avg. Flavor" default = false visible = @disType == 3 endparam param cm caption = "Coloring Mode" enum = "Min Distance*" "Iteration" "Modulated Iter" \ "Magnitude" "Real" "Imaginary" "Angle" \ "Maximum Distance" "Average" "Test" "Min Distance" hint = "Changes the method of coloring. \ * Uses more efficient calculation than the \ original 'Min Distance'." default = 0 endparam param mc caption = "Mod. Iter Modulus" hint = "The modulus value for Modulated \ Iter coloring." default = 8.0 visible = @cm == 2 endparam func colorFn caption = "Coloring Mode Fn" default = ident() hint = "Changes the gradient mapping onto the elements" visible = @cm > 0 && @cm < 10 endfunc complex param tz1 caption = "Color Offset" default = (0,0) visible = @cm > 0 && @cm < 10 hint = "Changes the gradient mapping onto the elements" endparam complex param tz2 caption = "Color Strength" default = (1,0) hint = "Changes the gradient mapping onto the elements" visible = @cm > 0 && @cm < 10 endparam complex param tz3 caption = "Color Power" default = (1,0) hint = "Changes the gradient mapping onto the elements" visible = @cm > 0 && @cm < 10 endparam float param edge caption = "Edge Definiton" default = 0 hint = "Increasing this value gives the elements an edge \ similar to 'First' trapping type, decreasing it gives \ an effect similar to 'Last' trapping type. You will \ have to adjust your gradient" endparam param vc caption = "Fractal Offset" hint = "Changes the appearance of the fractal. \ Try values from -1.5 to 1.5." default = (0,0) endparam heading caption = "Texture" endheading param tt caption = "Texture Mode" enum = "Off" "Patterns 1-#z" "Patterns 2-#pixel" "Fuzz 1" \ "Fuzz 2" "Fuzzy Patterns 1" "Fuzzy Patterns 2" \ "Blocks 1" "Blocks 2" "Triangles 1" "Triangles 2" \ "Triangles 3" default = 0 endparam param tc caption = "Texture Offset" hint = "Changes the appearance of the texture. \ When 'Change Tx Style' is enabled, 0,0 \ here produces circular Patterns." default = (1,1) visible = !(@tt == 0) || @m == 12 || @m == 13 endparam float param v1 caption = "Texture Amount" default = 0.1 visible = !(@tt == 0) endparam param sc caption = "Texture Scale" hint = "Larger values decrease the scale of Patterns, \ and increase the scale of Triangles." default = 5.0 visible = !(@tt == 0) endparam param tl caption = "Texture Density" hint = "Works similarly to 'Color Density', but is \ applied only to textures." default = 5.0 visible = !(@tt == 0) endparam param st caption = "Texture Modifier" hint = "Try values of 0.1 to 5" default = 1.0 visible = !(@tt == 0) endparam param ff caption = "Fuzz Factor" hint = "Values above 1 give a less well-defined \ edge to Patterns. For Triangles, changes \ the 'Intensity'." default = 1.0 visible = !(@tt == 0) endparam param tf caption = "Change Tx Style" default = false visible = !(@tt == 0) endparam heading caption = "" endheading param sk caption = "Iteration Cutoff" hint = "No texture is drawn after positive integer \ values, or before negative integer values. \ Any Decimal portion 'blends' in iteration \ coloring." default = 0.0 visible = !(@tt == 0) endparam param co caption = "Solid Color @ IC" hint = "Turns on Solid Color at the 'Iteration \ Cutoff'." default = false visible = !(@sk == 0) endparam param sa caption = "Expand+|-Contract" hint = "Used with Trap Modes 1 through E. \ Useful Range is around -10 to 10" default = 0.0 visible = (@m < 14 || @m > 22) endparam param syc caption = "Warp Factor" hint = "Used with Trap Modes 1 through E. \ Useful Range is around -1.5 to 1.5 \ Try 'Eyedropper' at low magnifications." default = (0,0) visible = (@m < 14 || @m > 22) endparam param wfl caption = "Warp Set 2" hint = "Changes the way the Warp Factor works." default = false visible = !(@syc == (0,0)) && (@m < 14 || @m > 22) endparam param sb caption = "'Ripple' Control" hint = "Used with Trap Modes 1 through D. \ A few Trap Modes are unaffected by this \ parameter. Useful Range is -50 to 50" default = 0.0 visible = (@m < 14 || @m > 22) endparam param ni caption = "Multiplier" hint = "Used with Trap Modes 1 through E. \ Useful Range is about 1 to 9." default = 3.0 visible = (@m < 14 || @m > 22) endparam param is caption = "Iters to Skip" hint = "Trapping is discontinued after this \ (non-zero) number of iterations." default = 0.0 visible = @ver <= 1.3 endparam int param skip caption = "Start Iteration" default = 0 hint = "Indicates the number of the iteration where trapping \ starts. Can be used in conjunction with the next param \ to display any number of consecutive iters at any position." visible = @ver > 1.3 endparam int param max caption = "Max Iterations" default = 100000 hint = "Indicates the maximum number of iterations that \ can be displayed, starting from the outermost. \ Can be used in conjuction with the last param to \ display any number of consecutive iters at any position." visible = @ver > 1.3 endparam bool param trapalliterations caption = "Limited Iterations" default = false hint = "Allows selectable blocks of iterations \ to be trapped and others skipped in a repeating pattern." endparam int param trapskip caption = "Iters to Trap [*skip]" default = 3 min = 1 hint = "This is the number of iterations to show for traps \ in a single block. When the 'Reverse Trapped/Skipped \ Iters' param is unchecked this becomes the number \ of iterations to hide." visible = @trapalliterations == true endparam int param trapiter caption = "Iters to Skip [*trap]" default = 3 min = 1 hint = "This is the number of iterations to hide for traps \ in a single block. When the 'Reverse Trapped/Skipped \ Iters' param is unchecked this becomes the number \ of iterations to show." visible = @trapalliterations == true endparam int param pattern caption = "Pattern Repeat" default = 0 min = 0 hint = "This determines the number of times the \ blocks of trapped/skipped iters repeat, after which all \ further iters are skipped. If the 'Reverse Shown/Hidden \ Iters' param is checked, all further iters are instead \ shown after this number of repeats. A value of 0 creates \ infinite repeats" visible = @trapalliterations == true endparam bool param reverse caption = "*[Reverse Trapped/Skipped Iters]" default = false visible = @trapalliterations == true endparam $ifdef VER40 heading text = "*Checking this box reverses the function of \ the 'Iters to Trap' and 'Iters to Skip' \ params, as indicated in brackets in \ those params above." visible = @trapalliterations == true endheading $endif bool param follow caption = "Pattern Follows Start Iter" default = true hint = "If checked, the blocks of trapped/skipped \ iters start from the chosen start iter. \ If unchecked, the blocks start from iter 0, \ whether or not it is skipped." visible = @trapalliterations == true endparam $ifdef VER40 heading text = "____________________________________________________________" visible = @trapalliterations == true endheading $endif param so caption = "Soften Color" hint = "Two different approaches to coloring \ Trap Modes 1-E." default = false visible = (@m < 14 || @m > 22) endparam param r caption = "Randomness" default = 0.0 endparam heading caption = "Masking" endheading param msk caption = "Mask Threshold" hint = "All values of trapped z1 that are less than \ this parameter are drawn in the Solid Color. \ For many formulas, the effective range \ is narrow - from 0.8 to 1.0 , but can be \ from .01 to about 2." default = 0.0 endparam param im caption = "Reverse Mask" hint = "Reverses the areas drawn in the Solid Color \ with those areas drawn normally." default = false visible = !(@msk == 0) endparam heading caption = "Functions" endheading func fn8 caption = "Initial function" default = abs() endfunc func fn1 caption = "Real function" default = ident() endfunc func fn2 caption = "Imag function" default = abs() endfunc func fn3 caption = "Overall function" default = abs() endfunc func fn9 caption = "Trap Mode 1-E Fn" default = sqr() visible = (@m < 14 || @m > 22) endfunc func fn7 caption = "Texture Fn 1" default = abs() visible = !(@tt == 0) endfunc func fn5 caption = "Texture Fn 2" default = ident() visible = !(@tt == 0) endfunc func fn6 caption = "Texture Fn 3" default = ident() visible = !(@tt == 0) endfunc func fn4 caption = "Final #Index Fn" default = asin() endfunc ;********************************************************** heading caption = "More Shaping Parameters" endheading bool param newStuff caption = "More Shaping Parameters" default = true endparam bool param type caption = "Accent" default = false hint = "Changes the shape of the elements" visible = @newStuff endparam int param ztype caption = "Mix Species" enum = "Normal""Modulus(z)""Atan2(z)""Real(z)""Imag(z)" default = 0 visible = @newStuff endparam func ztypeFn caption = "Mix Function 1" default = ident() hint = "Changes the shape of the elements" visible = @newStuff endfunc func ztypeFn2 caption = "Mix Function 2" default = ident() hint = "Changes the shape of the elements" visible = @newStuff endfunc complex param zamt1 caption = "Mix Offset" default = (0,0) visible = @newStuff endparam complex param zamt2 caption = "Mix Strength" default = (1,0) visible = @newStuff endparam complex param zamt3 caption = "Mix Power" default = (1,0) visible = @newStuff endparam int param varType caption = "X/Y Species" enum = "Normal""Modulus""Atan2""Real""Imag" default = 0 visible = @newStuff endparam int param opxy caption = "X/Y Operator" enum = "X+Y""X-Y""Y-X" default = 0 hint = "Changes the way X and Y combine to form Z" visible = @varType != "Modulus" && @newStuff endparam func varFn caption = "X/Y Function" default = ident() visible = @newStuff endfunc complex param xb1 caption = "X/Y Offset" default = (0,0) visible = @newStuff endparam complex param xb2 caption = "X/Y Strength" default = (1,0) visible = @newStuff endparam complex param xb3 caption = "X/Y Power" default = (1,0) visible = @newStuff endparam func nufnx caption = "X Function" default = ident () visible = @newStuff endfunc func nufny caption = "Y Function" default = ident () visible = @newStuff endfunc bool param nuflav2 caption = "Change Y Fn Flavor" default = false visible = @newStuff endparam complex param px1 caption = "X Offset" default = (0,0) visible = @newStuff endparam complex param py1 caption = "Y Offset" default = (0,0) visible = @newStuff endparam complex param px2 caption = "X Strength" default = (1,0) visible = @newStuff endparam complex param py2 caption = "Y Strength" default = (1,0) visible = @newStuff endparam complex param px3 caption = "X Power" default = (1,0) visible = @newStuff endparam complex param py3 caption = "Y Power" default = (1,0) visible = @newStuff endparam int param opadd caption = "Extra X/Y" enum = "None""+(X+Y)""-(X+Y)""+(X-Y)""-(X-Y)""+(Y-X)""-(Y-X)""+(X*Y)"\ "-(X*Y)""+(X/Y)""-(X/Y)""+(Y/X)""-(Y/X)""+(X^Y)""-(X^Y)""+(Y^X)""-(Y^X)" default = 0 hint = "These an extra set of X and Y values to the definition of Z whose \ strength and associated functions can be varied according to the \ parameters below" visible = @newStuff endparam func nufuncxtx caption = "Extra X Fn" default = sin() hint = "Varies the function associated with the X variable in the \ extra X/Y set." visible = @opadd > 0 && @newStuff endfunc func nufuncxty caption = "Extra Y Fn" default = sin() hint = "Varies the function associated with the Y variable in the \ extra X/Y set." visible = @opadd > 0 && @newStuff endfunc bool param nuflav caption = "Change Extra Y Fn Flavor" default = false visible = @opadd > 0 && @newStuff endparam complex param xtra1x caption = "Extra X Offset" default = (0,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra1y caption = "Extra Y Offset" default = (0,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra2x caption = "Extra X Strength" default = (1,0) hint = "Varies the strength in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra2y caption = "Extra Y Strength" default = (1,0) hint = "Varies the strength in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra3x caption = "Extra X Power" default = (1,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra3y caption = "Extra Y Power" default = (1,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam ; Morph Parameters-------------------------------------------------- heading caption = "Morph Parameters" visible = (@change == 0 && @exp1 == (1,0) && @exp2 == (1,0) \ && @exp3 == (1,0) && @tw == (0,0) && @tw2 == (0,0) && @tw3 == \ (0,0) && @tha2 == false) endheading heading caption = "Morph Parameters [active]" visible = (@change != 0 || @exp1 != (1,0) || @exp2 != (1,0) || \ @exp3 != (1,0) || @tw != (0,0) || @tw2 != (0,0) || @tw3 != (0,0) \ || @tha2 == true) endheading param adv caption = "Morph Parameters" hint = "Additional shaping parameters and functions." default = false endparam param tha2 caption = "Morph -> Morph II" default = true visible = @adv endparam param change caption = "Morph" enum = "1""2""3""4""5""6""7""8""9""10""11" default = 0 visible = @adv endparam param mmode caption = "Z1 Mode" enum = "z+|z|""z-|z|""|z|-z" default = 0 hint = "Defines relationship of z1 to z in 1st z block" visible = @adv && @tha2 endparam param zchange1 caption = "Z1 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z1 variable " visible = @adv && @tha2 endparam param mmode2 caption = "Z2 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z2 to z in 2nd z block" visible = @adv && @tha2 && @change > 0 endparam param zchange2 caption = "Z2 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z2 variable " visible = @adv && @tha2 && @change > 0 endparam param mmode3 caption = "Z3 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z3 to z in 3rd z block" visible = @adv && @tha2 && @change > 5 endparam param zchange3 caption = "Z3 type" enum = "|z|""atan2(z)""real(z)""imag(z)" hint = "Determines the character of z3 variable " default = 0 visible = @adv && @tha2 && @change > 5 endparam complex param exp1 caption = "Bias 1" default = (1,0) visible = @adv endparam complex param exp3 caption = "Bias 2" default = (1,0) visible = @adv && @change > 0 endparam complex param exp2 caption = "Bias 3" default = (1,0) visible = @adv && @change > 5 endparam complex param exp4 caption = "Bias Z1" default = (1,0) visible = @tha2 && @adv endparam complex param exp5 caption = "Bias Z2" default = (1,0) visible = @tha2 && @adv && @change > 0 endparam complex param exp6 caption = "Bias Z3" default = (1,0) visible = @tha2 && @adv && @change > 5 endparam complex param tw caption = "Twist 1" default = (0,0) visible = @adv endparam complex param tw2 caption = "Twist 2" default = (0,0) visible = @adv && @change > 0 endparam complex param tw3 caption = "Twist 3" default = (0,0) visible = @adv && @change > 5 endparam complex param tw4 caption = "Twist Z1" default = (0,0) visible = @tha2 && @adv endparam complex param tw5 caption = "Twist Z2" default = (0,0) visible = @tha2 && @adv && @change > 0 endparam complex param tw6 caption = "Twist Z3" default = (0,0) visible = @tha2 && @adv && @change > 5 endparam param op caption = "Operator" enum = "+""-""*""/""^" default = 0 visible = @adv && @change > 5 endparam func nufunc caption = "Morph function 1" default = ident() visible = @adv endfunc func nufunc2 caption = "Morph function 2" default = ident () visible = @adv && @change > 0 endfunc func nufunc3 caption = "Morph function 3" default = ident () visible = @adv && @change > 5 endfunc func nufunc4 caption = "Morph function Z1" default = ident () visible = @tha2 && @adv endfunc func nufunc5 caption = "Morph function Z2" default = zero () visible = @tha2 && @adv && @change > 0 endfunc func nufunc6 caption = "Morph function Z3" default = zero () visible = @tha2 && @adv && @change > 5 endfunc heading caption = "Extra Textures" visible = (@rnd == 0 && @fbmtxt == 0 && @decamt == 0 && @tpp == 0 && @gnarl_amt == 0) endheading heading caption = "Extra Textures [active]" visible = (@rnd != 0 || @fbmtxt != 0 || @decamt != 0 || @tpp != 0 || @gnarl_amt != 0) endheading param advt caption = "Extra Texture Params" default = true endparam float param txamt caption = "Overall Tx Percent" default = 100.0 hint = "Controls the amount of \ Random, fBm, Decimal, Popgnarl and Additional \ texture applied cumulatively." visible = @advt endparam float param rnd caption = "Random Tx Amount" default = 0.0 hint = "Adds Random texture" visible = @advt endparam heading caption = "fBm" visible = @advt && @fbmtxt == 0 endheading heading caption = "fBm [active]" visible = @advt && @fbmtxt != 0 endheading param advfbm caption = "fBm Texturing" default = true visible = @advt endparam float param fbmtxt caption = "fBm Tx Amount" default = 0.0 visible = @advt && @advfbm endparam param fbminit caption = "fBm Initialization" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advfbm endparam param ztyp4 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'fBm Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam func fntx8 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'fBm Initialization'" visible = @advt && @advfbm endfunc func fntx9 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'fBm Initialization'" visible = @advt && @advfbm endfunc func fbmrfn1 caption = "fBm Function 1" default = ident() hint = "Try changing this to achieve different fBm \ 'cloud' distribution and look" visible = @advt && @advfbm endfunc func fbmifn1 caption = "fBm Function 2" default = ident() hint = "Try changing this to achieve different fBm \ 'cloud' distribution and look" visible = @advt && @advfbm endfunc func fbmrfn2 caption = "Pattern Function 1" default = floor() hint = "Changing this often radically alters the look of the \ texture. With many functions--if they look 'grainy'--\ you will need to make the value of the 'Frequency' (real) \ param much smaller--on the order of .0000001. Experiment!" visible = @advt && @advfbm endfunc func fbmifn2 caption = "Pattern Function 2" default = floor() hint = "Changing this often radically alters the look of the \ texture. With many functions--if they look 'grainy'--\ you will need to make the value of the 'Frequency' (real) \ param much smaller--on the order of .0000001. Experiment!" visible = @advt && @advfbm endfunc float param a caption = "Distribution 1" default = 1 visible = @advt && @advfbm endparam float param b caption = "Distribution 2" default = 1 visible = @advt && @advfbm endparam float param c caption = "Distribution 3" default = 1 visible = @advt && @advfbm endparam float param d caption = "Distribution 4" default = 1 visible = @advt && @advfbm endparam complex param txia4 caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param txib4 caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param txic4 caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param exad8 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'fBm Initialization'" visible = @advt && @advfbm endparam complex param exad9 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'fBm Initialization'" visible = @advt && @advfbm && !(@fbminit == 0 ||@fbminit == 5 || @fbminit == 6 ||\ @fbminit == 21) endparam float param fbmscale caption = "fBm Scale" default = 1.0 visible = @advt && @advfbm endparam complex param fbmoffset caption = "fBm Offset" default = (0,0) visible = @advt && @advfbm endparam float param fbmangle caption = "fBm Rotation" default = 0.0 visible = @advt && @advfbm endparam float param fbmstep caption = "fBm Scale Step" default = 0.5 visible = @advt && @advfbm endparam float param fbmastep caption = "fBm Rotation Step" default = 37.0 visible = @advt && @advfbm endparam param fbmoct caption = "fBm Octaves" default = 7 min = 1 visible = @advt && @advfbm endparam float param fbmpower caption = "fBm Exponent" default = 2.0 visible = @advt && @advfbm endparam float param fbm_limit caption = "fBm Limit" default = 0.0 visible = @advt && @advfbm endparam bool param fbm_sgn caption = "Soften Texture" default = true visible = @advt && @advfbm endparam heading caption = "Decimal" visible = @advt && @decamt == 0 endheading heading caption = "Decimal [active]" visible = @advt && @decamt != 0 endheading param advd caption = "Decimal Texturing" default = false visible = @advt endparam float param decamt caption = "Decimal Tx Amount" default = 0.0 visible = @advt && @advd endparam param dec_init caption = "Decimal Initialisation" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advd endparam param ztyp2 caption = "Init z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Decimal Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam func fntx4 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Decimal Initialization'" visible = @advt && @advd endfunc func fntx5 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Decimal Initialization'" visible = @advt && @advd endfunc param dec_type caption = "Decimal Type" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advd endparam func fndec caption = "Type Function" default = atanh () hint = "Active when 'Decimal Type' = 'All Functions'" visible = @advt && @advd && @dec_type == 4 endfunc complex param txia2 caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam complex param txib2 caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam complex param txic2 caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam float param dec_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Decimal Type'" visible = @advt && @advd endparam float param dec_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present) defined in 'Decimal Type'" visible = @advt && @advd && @dec_type > 4 endparam float param dectxt caption = "Decimal Depth" default = 1.0 hint = "Changes the amount and to some extent \ the pattern of the texture." visible = @advt && @advd endparam float param dec_limit caption = "Decimal Limit" default = 2.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advd endparam complex param exad4 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 1st (or only) variable present defined in \ 'Decimal Initialization'" visible = @advt && @advd endparam complex param exad5 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 2nd variable (when present) defined in \ 'Decimal Initialization'" visible = @advt && @advd && !(@dec_init == 0 ||@dec_init == 5 || @dec_init == 6) endparam float param dec_size caption = "Decimal Size" default = 1.0 visible = @advt && @advd endparam param dec_sgn caption = "Apply Decimal Sign?" default = true visible = @advt && @advd endparam heading caption = "Popgnarl" visible = @advt && @gnarl_amt == 0 endheading heading caption = "Popgnarl [active]" visible = @advt && @gnarl_amt != 0 endheading param advpg caption = "Popgnarl Texturing" default = false visible = @advt endparam float param gnarl_amt caption = "Popgnarl Amount" default = 0.0 min = 0.0 visible = @advt && @advpg endparam param gnarl_init caption = "Popgnarl Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advpg endparam param ztyp3 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Popgnarl Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam func fntx6 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg endfunc func fntx7 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg endfunc complex param txia3 caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param txib3 caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param txic3 caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param exad6 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 1st (or only) variable defined in 'Popgnarl Initilaization'" visible = @advt && @advpg endparam complex param exad7 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 2nd variable (when present) defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && !(@gnarl_init == 0 || @gnarl_init == 5 || \ @gnarl_init == 6 || @gnarl_init == 21) endparam param gnarl_type caption = "Popgnarl Mode" enum = "real" "imag" "real+imag" "real*imag" "real-imag" \ "real/imag" "imag/real" "real^imag" "imag^real" \ "1/real" "1/imag" "angle" "magnitude" "arith. mean" \ "geom. mean" visible = @advt && @advpg endparam func fng caption = "Mode Function" default = abs() hint = "Acts on the variables in 'Popgnarl Mode'" visible = @advt && @advpg && @gnarl_type < 11 endfunc param gnarl_scaling caption = "Popgnarl Scaling" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advpg endparam func fngnarl caption = "Scaling Function" default = atanh () visible = @advt && @advpg && @gnarl_scaling == 4 endfunc float param gnarl_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Popgnarl Scaling'" visible = @advt && @advpg endparam float param gnarl_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present)defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @gnarl_scaling > 4 endparam param gnarl_form caption = "Popgnarl Formula" enum = "gnarl" "popcorn" "popsicle" "tannous" "narlog" visible = @advt && @advpg endparam float param gnarl_limit caption = "Popgnarl Limit" default = 1.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advpg endparam float param gnarl_size caption = "Popgnarl Size" default = 1.0 visible = @advt && @advpg endparam int param gnarl_octaves caption = "Popgnarl Octaves" default = 5 min = 1 visible = @advt && @advpg endparam heading caption = "Geometrix" visible = @advt && @trtxt == 0 endheading heading caption = "Geometrix [active]" visible = @advt && @trtxt != 0 endheading param advtr caption = "Geometrix Texturing" default = true visible = @advt endparam float param trtxt caption = "Geometrix Tx Amt" default = 0.0 visible = @advt && @advtr endparam float param exp caption = "Contrast" default = 1 visible = @advt && @advtr hint = "Higher values intensify the contrast between texture sections. If \ you have burned-out texture areas try lowering this value" endparam param trinit caption = "Geometrix Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advtr endparam param ztyp5 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Geometrix Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam func fntx10 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr endfunc func fntx11 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr endfunc complex param trxia caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param trxib caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param trxic caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param exad10 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'Geometrix Initialization'" visible = @advt && @advtr endparam complex param exad11 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'Geometrix Initialization'" visible = @advt && @advtr && !(@trinit == 0 ||@trinit == 5 || @trinit == 6 ||\ @trinit == 21) endparam float param scc caption = "Density" default = 1.0 hint = "Higher values create finer detail in the texture" visible = @advt && @advtr endparam float param trp1 caption = "Scale" default = 1 visible = @advt && @advtr hint = "Densest texture is at '1'. Try other values and increase the \ 'Density' value to achieve different texture patterns" endparam float param freq caption = "Definition 1" default = 10 visible = @advt && @advtr hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition and/or complexity" endparam float param trp2 caption = "Definition 2" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr endparam float param trp3 caption = "Definition 3" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr endparam float param shad1 caption = "Shading 1" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad2 caption = "Shading 2" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad3 caption = "Shading 3" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad4 caption = "Shading 4" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam func fnzr caption = "Z function 1" default = ident() visible = @advt && @advtr endfunc func fnzi caption = "Z function 2" default = ident() visible = @advt && @advtr endfunc func fn1tx caption = "Real function" default = sqrt() visible = @advt && @advtr endfunc func fn2tx caption = "Imag function" default = ident() visible = @advt && @advtr endfunc func fn3tx caption = "Overall function" default = asin() visible = @advt && @advtr endfunc float param geo_limit caption = "Geometrix Limit" default = 0.0 hint = "Low values limit texture contrast. Zero is 'off'" visible = @advt && @advtr endparam bool param geo_sgn caption = "Soften Texture" default = false visible = @advt && @advtr endparam heading caption = "Additional Texture" visible = @advt && @tpp == 0 endheading heading caption = "Additional Texture [active]" visible = @advt && @tpp != 0 endheading param advatx caption = "Additional Texturing" default = false visible = @advt endparam float param tpp caption = "Add'l Tx Amount" hint = "'Blends' in texture" default = 0.0 visible = @advt && @advatx endparam param ttt caption = "Add'l Tx Initialization" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advatx endparam param ztyp caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Add'l Tx Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advatx && (@ttt < 5 || @ttt > 14) endparam func fntx1 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Add'l Tx Initialization'" visible = @advt && @advatx endfunc func fntx2 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in\ 'Add'l Tx Initialization'" visible = @advt && @advatx endfunc func fntx3 caption = "Add'l Tx Function" default = trunc() visible = @advt && @advatx endfunc complex param txia1 caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advatx && (@ttt < 5 || @ttt > 14) endparam complex param txib1 caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advatx && (@ttt < 5 || @ttt > 14) endparam complex param txic1 caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advatx && (@ttt < 5 || @ttt > 14) endparam complex param exad1 caption = "Frequency 1" default = (1.0,0.0) hint = "Determines the frequency of the pattern by acting on \ the 1st (or only) variable defined by 'Add'l Tx Initialization'" visible = @advt && @advatx endparam complex param exad2 caption = "Frequency 2" default = (1.0,0.0) hint = "Determines the frequency of the pattern by acting on \ the 2nd variable (when present) defined by 'Add'l Tx Initialization'" visible = @advt && @advatx && !(@ttt == 0 ||@ttt == 5 || @tt == 6) endparam float param tv caption = "Scale 1" hint = "This and the next parameter work together \ to determine the scale of the texture" default = 10.0 visible = @advt && @advatx endparam float param ts caption = "Scale 2" default = 2.0 visible = @advt && @advatx endparam float param tcc caption = "Density" hint = "Works similarly to 'Color Density'. Positive \ numbers use division. Negative numbers use modulus, \ producing a slightly different effect." default = 5.0 visible = @advt && @advatx endparam float param rr caption = "Randomness" default = 0.0 visible = @advt && @advatx endparam bool param add_sgn caption = "Soften Texture" default = true visible = @advt && @advatx endparam }*************************************************************** ldm-DoodadsII { ; Dennis Magar, September 16, 2002 ; A reworking of "Doodads" with many added "Morph" ; parameters. The original "Doodads" shapes can ; be reproduced by unchecking the box "Morph -> ; "Morph II" under the heading "Morph Parameters". ; ; When "Morph II" is activated by default only ; "Morph function Z1" is active; you must set ; "Morph function Z2" & 3 to some function other than ; "zero" to activate them when they appear as the ; appropriate Morph choice is selected. ; ; When "Morph II" is active there is also the possibility ; of choosing the variable type for Z1-Z3 in any of the ; three positions where that secondary Z expression appears, ; via the "Z1[2,3]Type" parameters. ; ; Morph Progressive Parameters: The values of these params ; increment at every iteration, either linearly or in a ; few non-linear ways. Checking the bool param box for ; a given param activates that param, revealing a field ; in which you can enter the amount that you want that param ; to change by at every iteration. If you choose one of the ; non-linear methods that value will be altered at each ; iteration by the "non-linear amount" chosen in one of several ; ways. ; ; If you uncheck the associated bool box the param becomes ; inactive; this gives you an easy way to check the effect without ; losing the value. When any progressive param is active the heading ; changes to reflect this. ; ; Since the effect of the change is cumulative, building at each ; iteration, a little goes a long way. Small values are usually ; most effective. ; ; Toby Marshall, 12 Apr. 2008 ; Multitudinous thanks to Dennis Magar for ; allowing me to publish it :-) ; version 1.61, "Skip Iter" params modified. ; version 1.7, some params added. ; version 1.8, converted oldz, added one "Triangle Mode" ; choice. ; version 1.9, added "Extra Textures". Thanks to ; Michèle Dessureault, Damien M. Jones and Andreas ; Lober for allowing their code to be used. ; version 2.0, added a new texture "Geometrix", ; based on code by Dennis Magar. ; version 2.01, optimized some code. Also moved the Morph ; functions under the Morph parameter heading instead ; of under "Functions". ; version 2.1, added some new shaping parameters. ; version 2.11, reorganized interface a bit ; version 2.2, added lots of params and functions that ; relate to how X and Y are determined and processed. ; Also added some params and a function that change ; how the gradient is mapped in the coloring modes. ; version 2.3, corrected one parameter--compatibility OK. ; version 2.31, added four functions to the fBm texture. ; Check the hints. ; version 2.32, added a couple more gizmos to fBm texturing. ; version 2.33, added "Trap Type" and "Element Width" params. ; Thanks to Damien M. Jones and Mark Townsend for this idea. ; version 2.34, added progressive Morph params. ; version 2.35, added "edge definition" param and three new ; trapping modes. ; version 2.36, added "limited iterations"; many thanks to ; Damien M. Jones for allowing me to use this code of his. ; version 2.37, added pattern repeat param to limited iters, ; adapted from Ron Barnett. ; version 2.38, rationalized and standardized limited ; iter code init: float zr = 0 float zi = 0 float zz = 0 float a2 = 0 float za = 0 float t2 = 1 int ti = 0 int i = 0 float dist = 1e20 if @traptype == "Farthest" dist = 0 endif float x = 0 float y = 0 float texFin = 0 float s1 = 0 float g1 = 0 float rn = abs(@r*real(#random)) float ff = 0 complex tz = (0,0) complex gc = (0,0) complex pt1 = (0,0) int i = 0 bool sol = false int sn = 1 if @m % 2 == 1 sn = -1 endif float vsa = sn*@sa/10 float vsb = abs(@sb/10) float ico = @sk float icd = abs(ico)-trunc(abs(ico)) float icm = 0 if ico <= 0 icm = trunc(abs(ico)) ico = ico + 1e7 endif ico = ico - 1 float fmr = real(@fm) float fmi = imag(@fm) float zr1 = 0 float zi1 = 0 complex fc = (0,0) complex z2 = (0,0) complex z3 = (0,0) complex z4 = (0,0) complex z1p = (0,0) complex z1q = (0,0) complex qw = (0,0) complex er = (0,0) complex ty = (0,0) complex nuvar = (0,0) complex z_values[#maxiter + 1] z_values[0] = #z float rnn = real(#random) float t3 = 0 float tx = abs(@tpp) complex tzz = (0,0) float ct = abs(@tcc*1000) float tmp = 0 float texture=0.0 p=(0.0,0.0) pfb = (0.0,0.0) float x = 0 float y = 0 float xx =0 float yy =0 float ddd = 0 float texture_rnd = 0.0 float texture_dec = 0.0 float texture_fbm = 0.0 float texture_gna = 0.0 float pd = 0.0 complex tz2 = (0,0) float texture_tr = 0.0 complex ptr = (0,0) float frfr = 0 float fifi = 0 float zzzz = 0 float r0r0 = 0 float i0i0 = 0 float r1r1 = 0 float i1i1 = 0 float azaz = 0 float bzbz = 0 float czcz = 0 float dzdz = 0 float zaza = 0 float avav = 1 float xbxb = 1 float zaa = 0 complex xb = (0,0) bool trapped = false tw = @tw tw2= @tw2 tw3 = @tw3 tw4 = @tw4 tw5 = @tw5 tw6 = @tw6 exp1 = @exp1 exp2 = @exp2 exp3 = @exp3 exp4 = @exp4 exp5 = @exp5 exp6 = @exp6 float dave = 0 float dsum = 0 float distance = 0 bool trapping = false float fiter = 0 float patnum = 0 loop: complex z1 = #z if @tha2 == false qw = @nufunc(z1-tw)^exp3 er = @nufunc2((z1-tw2)^exp1) ty = @nufunc3((z1-tw3)^exp2) if @change == "1" z1 = @nufunc(z1-tw)^exp1 elseif @change == "2" z1 = qw+er elseif @change == "3" z1 = qw-er elseif @change == "4" z1 = qw*er elseif @change == "5" z1 = qw/er elseif @change == "6" z1 = qw^er elseif @change == "7" if @op == "+" z1 = qw+(er+ty) elseif @op == "-" z1 = qw+(er-ty) elseif @op == "*" z1 = qw+(er*ty) elseif @op == "/" z1 = qw+(er/ty) elseif @op == "^" z1 = qw+(er^ty) endif elseif @change == "8" if @op == "+" z1 = qw-(er+ty) elseif @op == "-" z1 = qw-(er-ty) elseif @op == "*" z1 = qw-(er*ty) elseif @op == "/" z1 = qw-(er/ty) elseif @op == "^" z1 = qw-(er^ty) endif elseif @change == "9" if @op == "+" z1 = qw*(er+ty) elseif @op == "-" z1 = qw*(er-ty) elseif @op == "*" z1 = qw*(er*ty) elseif @op == "/" z1 = qw*(er/ty) elseif @op == "^" z1 = qw*(er^ty) endif elseif @change == "10" if @op == "+" z1 = qw/(er+ty) elseif @op == "-" z1 = qw/(er-ty) elseif @op == "*" z1 = qw/(er*ty) elseif @op == "/" z1 = qw/(er/ty) elseif @op == "^" z1 = qw/(er^ty) endif elseif @change == "11" if @op == "+" z1 = qw^(er+ty) elseif @op == "-" z1 = qw^(er-ty) elseif @op == "*" z1 = qw^(er*ty) elseif @op == "/" z1 = qw^(er/ty) elseif @op == "^" z1 = qw^(er^ty) endif endif else if @zchange1 == "|z|" z2 = |z1| elseif @zchange1 == "atan2(z)" z2 = atan2(z1) elseif @zchange1 == "real(z)" z2 = real(z1) elseif @zchange1 == "imag(z)" z2 = imag(z1) endif if @zchange2 == "|z|" z3 = |z1| elseif @zchange2 == "atan2(z)" z3 = atan2(z1) elseif @zchange2 == "real(z)" z3 = real(z1) elseif @zchange2 == "imag(z)" z3 = imag(z1) endif if @zchange3 == "|z|" z4 = |z1| elseif @zchange3 == "atan2(z)" z4 = atan2(z1) elseif @zchange3 == "real(z)" z4 = real(z1) elseif @zchange3 == "imag(z)" z4 = imag(z1) endif aa = @nufunc((z1-tw)+@nufunc4(z2-tw4)^exp4) bb = @nufunc((z1-tw)-@nufunc4(z2-tw4)^exp4) cc = @nufunc4((z2-tw4)^exp4-@nufunc(z1-tw)) ff = real((z3-tw5)^exp5) dd = @nufunc5(ff) jj = (z4-tw6) kk = (z1-tw2) oo = (z1-tw3) gg = @nufunc2(kk) hh = @nufunc6(jj)^exp6 pp = @nufunc3(oo) if @mmode == "z+|z|" nuvar = aa elseif @mmode == "z-|z|" nuvar = bb elseif @mmode == "|z|-z" nuvar = cc endif if @change == "1" z1 = nuvar^exp1 elseif @change == "2" if @mmode2 == "z+|z|" z1 = nuvar^exp3+@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^exp3+@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^exp3+@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^exp3+@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^exp3+@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^exp3+@nufunc5(ff/gg)^exp1 endif elseif @change == "3" if @mmode2 == "z+|z|" z1 = nuvar^exp3-@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^exp3-@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^exp3-@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^exp3-@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^exp3-@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^exp3-@nufunc5(ff/gg)^exp1 endif elseif @change == "4" if @mmode2 == "z+|z|" z1 = nuvar^exp3*@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^exp3*@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^exp3*@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^exp3*@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^exp3*@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^exp3*@nufunc5(ff/gg)^exp1 endif elseif @change == "5" if @mmode2 == "z+|z|" z1 = nuvar^exp3/@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^exp3/@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^exp3/@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^exp3/@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^exp3/@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^exp3/@nufunc5(ff/gg)^exp1 endif elseif @change == "6" if @mmode2 == "z+|z|" z1 = nuvar^exp3^@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^exp3^@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^exp3^@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^exp3^@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^exp3^@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^exp3^@nufunc5(ff/gg)^exp1 endif elseif @change == "7" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^exp6-pp)^exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^exp6/pp)^exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^exp3+@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^exp3+@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^exp3+@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^exp3+@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^exp3+@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^exp3+@nufunc5(ff/gg)^exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "8" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^exp6-pp)^exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^exp6/pp)^exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^exp3-@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^exp3-@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^exp3-@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^exp3-@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^exp3-@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^exp3-@nufunc5(ff/gg)^exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "9" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^exp6-pp)^exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^exp6/pp)^exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^exp3*@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^exp3*@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^exp3*@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^exp3*@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^exp3*@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^exp3*@nufunc5(ff/gg)^exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "10" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^exp6-pp)^exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^exp6/pp)^exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^exp3/@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^exp3/@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^exp3/@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^exp3/@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^exp3/@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^exp3/@nufunc5(ff/gg)^exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "11" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^exp6-pp)^exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^exp6/pp)^exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^exp3^@nufunc2(kk+dd)^exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^exp3^@nufunc2(kk-dd)^exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^exp3^@nufunc5(ff-gg)^exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^exp3^@nufunc2(kk*dd)^exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^exp3^@nufunc2(kk/dd)^exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^exp3^@nufunc5(ff/gg)^exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif endif endif zc = @fn4(z1) zr = real(zc) zi = imag(zc) if @ver == 1.5 if i >= real(@skip) && i <= imag(@skip) if (@m > 3 && @m < 26) || @mr == 5 || @mr == 8 \ || @mr == 9 || @mr == 12 || @ptt == 5 || @ptt == 9 gc = @fn3(@fn1(@fn2(z1))) g1 = cabs(gc) endif if @m == 7 || @mr == 5 a2 = atan2(gc) endif if @m == 8 || @m == 9 || @m == 12 || @m == 13 \ || @m > 19 || @mr == 9 || @mr == 11 s1 = cabs(zc) endif if @m == 12 || @m == 13 || @m == 22 || @m == 23 \ || @m == 26 || @m == 27 || @mr == 10 || @mr == 12 ff = cabs(@fn3(@fn1(real(z1))+@fn2(imag(z1)))) endif if @m >27 fc = @fn3(@fn1(real(z1))+flip(@fn2(imag(z1)))) endif if @mr < 5 zr1 = real(@fn1(zr*fmr)) zi1 = real(@fn2(zi*fmi)) endif if @mrf == true zr1 = abs(zr1) zi1 = abs(zi1) endif if @mr == 0 ;a zz = real(@fn3(zr1*zi1)) elseif @mr == 1 ;b zz = real(@fn3(zr1+zi1)) elseif @mr == 2 ;c zz = real(@fn3(zr1/zi1)) elseif @mr == 3 ;d zz = real(@fn3(zi1^zr1)) elseif @mr == 4 ;e zz = real(@fn3(zr1^zi1)) elseif @mr == 5 ;f zz = real(@fn4(@fn3(abs(@fn1(g1*fmr)-@fn2(a2*fmi))))) elseif @mr == 6 ;g if @mrf == false zz = real(atan(@fn3(@fn1(zr*fmr)) \ /(@fn3(@fn2(zi^2*fmi))))) else zz = real(atan(@fn3(abs(@fn1(zr*fmr)) \ /(@fn3(abs(@fn2(zi^2*fmi))))))) endif elseif @mr == 7 ;h zz = cabs(recip(@fn3(@fn2(@fn1(zc*fmr*2))))) elseif @mr == 8 ;i zz = real(@fn3(@fn1(abs((g1-zr)*fmr/(g1-zi)*fmi))))^.1 elseif @mr == 9 ;j float temp = abs((g1-zr)*fmr/(g1+1e-20)) zz = real(@fn3(abs(@fn1(temp)-@fn2(s1*fmi)))) elseif @mr == 10 ;k zz = cabs(@fn4(ff*fmr-gc*fmi))^2 elseif @mr == 11 ;l zz = cabs(@fn4(s1-1)*fmr/(s1+1)*fmi) elseif @mr == 12 ;m zz = cabs(@fn4(g1)*fmr/(ff)*fmi) endif if @m < 2 ;1,2 y = zr elseif @m == 2 || @m == 3 ;3,4 if @tb < 0 y = zr-zi else y = zr*3-zi endif elseif @m == 4 ;5 y = abs(g1^3/(zr-g1)) elseif @m == 5 ;6 y = zr/2+g1 elseif @m == 6 ;7 y = g1^3 elseif @m == 7 ;8 y = g1^2/a2 elseif @m == 8 || @m == 9 ;9,A y = zr*s1/zi elseif @m == 10 || @m == 11 ;B,C y = g1^2 elseif @m == 12 || @m == 13 ;D,E y = g1-abs((ff-g1)/s1) elseif @m == 14 || @m == 15 ;F,G y = g1-zr/g1 elseif @m == 16 || @m == 17 ;H,I y = g1-abs(zr/g1) elseif @m == 18 || @m == 19 ;J,K y = g1 elseif @m == 20 || @m == 21 ;L,M y = s1*.1/g1^2 elseif @m == 22 || @m == 23 ;N,O y = g1^2-abs((ff-g1)/s1) elseif @m == 24 || @m == 25 ;P,Q y = g1^2-s1 elseif @m == 26 || @m == 27 ;R,S y = ff else ;T,U y = imag(fc) endif y = real(@fn9(y - @tad/10)) if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if @sb > 0 y = y % vsb endif if @m % 2 == 0 x = zz - @mul*(real(abs(@fn1(y - abs(@fn2(y)))))) else if @mc < 0 x = zz - @mul*(real(@fn1(y + @fn2(y))))/2 else x = zz - @mul*y endif endif if @sb < 0 x = x % vsb endif x = x + vsa if @nuflav == true if @nuflav2 == true if @opxy == "X+Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 + \ @nufny(flip(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "X-Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 - \ @nufny(flip(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "Y-X" xb = (@fn8(@nufny((flip(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3)^@pwr endif else if @opxy == "X+Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "X-Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "Y-X" xb = (@fn8(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3)^@pwr endif endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif else if @nuflav2 == true if @opxy == "X+Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 + \ @nufny(flip(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "X-Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 - \ @nufny(flip(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "Y-X" xb = (@fn8(@nufny((flip(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3)^@pwr endif else if @opxy == "X+Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "X-Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "Y-X" xb = (@fn8(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3)^@pwr endif endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif endif complex zq = (0,0) if @ver > 2.2 if @ztype == "Normal" zq = @ztypeFn(z1) elseif @ztype == "Modulus(z)" zq = @ztypeFn(|z1|) elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1)) elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1)) elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1)) endif else if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif endif if @type == false zz = cabs(@ztypeFn2(((zq-@zamt1)*@zamt2)^@zamt3)- xb) else zz = cabs(xb + @ztypeFn2(((zq-@zamt1)*@zamt2)^@zamt3)) endif if zz < dist ti = i dist = zz tz = z1 tz2 = #z endif endif else if (@m > 3 && @m < 26) || @mr == 5 || @mr == 8 \ || @mr == 9 || @mr == 12 || @ptt == 5 || @ptt == 9 gc = @fn3(@fn1(@fn2(z1))) g1 = cabs(gc) endif if @m == 7 || @mr == 5 a2 = atan2(gc) endif if @m == 8 || @m == 9 || @m == 12 || @m == 13 \ || @m > 19 || @mr == 9 || @mr == 11 s1 = cabs(zc) endif if @m == 12 || @m == 13 || @m == 22 || @m == 23 \ || @m == 26 || @m == 27 || @mr == 10 || @mr == 12 ff = cabs(@fn3(@fn1(real(z1))+@fn2(imag(z1)))) endif if @m >27 fc = @fn3(@fn1(real(z1))+flip(@fn2(imag(z1)))) endif if @mr < 5 zr1 = real(@fn1(zr*fmr)) zi1 = real(@fn2(zi*fmi)) endif if @mrf == true zr1 = abs(zr1) zi1 = abs(zi1) endif if @mr == 0 ;a zz = real(@fn3(zr1*zi1)) elseif @mr == 1 ;b zz = real(@fn3(zr1+zi1)) elseif @mr == 2 ;c zz = real(@fn3(zr1/zi1)) elseif @mr == 3 ;d zz = real(@fn3(zi1^zr1)) elseif @mr == 4 ;e zz = real(@fn3(zr1^zi1)) elseif @mr == 5 ;f zz = real(@fn4(@fn3(abs(@fn1(g1*fmr)-@fn2(a2*fmi))))) elseif @mr == 6 ;g if @mrf == false zz = real(atan(@fn3(@fn1(zr*fmr)) \ /(@fn3(@fn2(zi^2*fmi))))) else zz = real(atan(@fn3(abs(@fn1(zr*fmr)) \ /(@fn3(abs(@fn2(zi^2*fmi))))))) endif elseif @mr == 7 ;h zz = cabs(recip(@fn3(@fn2(@fn1(zc*fmr*2))))) elseif @mr == 8 ;i zz = real(@fn3(@fn1(abs((g1-zr)*fmr/(g1-zi)*fmi))))^.1 elseif @mr == 9 ;j float temp = abs((g1-zr)*fmr/(g1+1e-20)) zz = real(@fn3(abs(@fn1(temp)-@fn2(s1*fmi)))) elseif @mr == 10 ;k zz = cabs(@fn4(ff*fmr-gc*fmi))^2 elseif @mr == 11 ;l zz = cabs(@fn4(s1-1)*fmr/(s1+1)*fmi) elseif @mr == 12 ;m zz = cabs(@fn4(g1)*fmr/(ff)*fmi) endif if @m < 2 ;1,2 y = zr elseif @m == 2 || @m == 3 ;3,4 if @tb < 0 y = zr-zi else y = zr*3-zi endif elseif @m == 4 ;5 y = abs(g1^3/(zr-g1)) elseif @m == 5 ;6 y = zr/2+g1 elseif @m == 6 ;7 y = g1^3 elseif @m == 7 ;8 y = g1^2/a2 elseif @m == 8 || @m == 9 ;9,A y = zr*s1/zi elseif @m == 10 || @m == 11 ;B,C y = g1^2 elseif @m == 12 || @m == 13 ;D,E y = g1-abs((ff-g1)/s1) elseif @m == 14 || @m == 15 ;F,G y = g1-zr/g1 elseif @m == 16 || @m == 17 ;H,I y = g1-abs(zr/g1) elseif @m == 18 || @m == 19 ;J,K y = g1 elseif @m == 20 || @m == 21 ;L,M y = s1*.1/g1^2 elseif @m == 22 || @m == 23 ;N,O y = g1^2-abs((ff-g1)/s1) elseif @m == 24 || @m == 25 ;P,Q y = g1^2-s1 elseif @m == 26 || @m == 27 ;R,S y = ff else ;T,U y = imag(fc) endif y = real(@fn9(y - @tad/10)) if @sa < 0 && sn == -1 y = y * (-@sa+5)/5 vsa = sn*@sa/20 endif if @sb > 0 y = y % vsb endif if @m % 2 == 0 x = zz - @mul*(real(abs(@fn1(y - abs(@fn2(y)))))) else if @mc < 0 x = zz - @mul*(real(@fn1(y + @fn2(y))))/2 else x = zz - @mul*y endif endif if @sb < 0 x = x % vsb endif x = x + vsa if @nuflav == true if @nuflav2 == true if @opxy == "X+Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 + \ @nufny(flip(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "X-Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 - \ @nufny(flip(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "Y-X" xb = (@fn8(@nufny((flip(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3)^@pwr endif else if @opxy == "X+Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "X-Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "Y-X" xb = (@fn8(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3)^@pwr endif endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif else if @nuflav2 == true if @opxy == "X+Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 + \ @nufny(flip(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "X-Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 - \ @nufny(flip(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "Y-X" xb = (@fn8(@nufny((flip(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3)^@pwr endif else if @opxy == "X+Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 + \ flip(@nufny(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "X-Y" xb = (@fn8((@nufnx(x-@px1)*@px2)^@px3 - \ flip(@nufny(y-@py1)*@py2)^@py3))^@pwr elseif @opxy == "Y-X" xb = (@fn8(flip((@nufny(y-@py1)*@py2)^@py3) - \ @nufnx(x-@px1)*@px2)^@px3)^@pwr endif endif if @varType == "Normal" xb = @varFn((xb-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" xb = @varFn((|xb|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" xb = @varFn(atan2(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Real" xb = @varFn(real(xb-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" xb = @varFn(imag(xb-@xb1)*@xb2)^@xb3 endif if @opadd == "None" xb = xb elseif @opadd == "+(X+Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" xb = xb + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" xb = xb - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" xb = xb + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" xb = xb - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @type == false zz = cabs(@ztypeFn2(((zq-@zamt1)*@zamt2)^@zamt3)- xb) else zz = cabs(xb + @ztypeFn2(((zq-@zamt1)*@zamt2)^@zamt3)) endif if @avgflv == true if @mode_change == 0 dsum = zz + (dsum) dave = dsum/(i+1) elseif @mode_change == 1 dsum = cabs(cotanh(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 2 dsum = cabs(log(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 3 dsum = |log(zz +(dsum))| dave = dsum/(i+1) dave = |sqrt(dave)| elseif @mode_change == 4 dsum = |atan(zz +(dsum))| dave = dsum/(i+1) dave = |dave| elseif @mode_change == 5 dsum = |tanh(zz +(dsum))| dave = dsum/(i+1) dave = |dave| elseif @mode_change == 6 dsum = cabs(asin(zz +(dsum))) dave = dsum/(i+1) dave = cabs(dave) elseif @mode_change == 7 dsum = cabs(sqrt(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 8 dsum = cabs(cos(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 9 dsum = cabs(recip(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 10 dsum = |recip(zz +(dsum))| dave = dsum/(i+1) dave = |sqrt(dave)| elseif @mode_change == 11 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 12 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(log(dave)) elseif @mode_change == 13 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(atanh(dave)) elseif @mode_change == 14 dsum = cabs(round(zz +(dsum))) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 15 dsum = cabs(trunc(zz +(dsum))) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 16 dsum = cabs(round(zz +(dsum))) dave = dsum/(i+1) dave = cabs(log(dave)) elseif @mode_change == 17 dsum = cabs(trunc(zz +(dsum))) dave = dsum/(i+1) dave = cabs(log(dave)) endif else dsum = zz +(dsum) dave = dsum/(i+1) if @mode_change == 0 dsum = zz + (dsum) elseif @mode_change == 1 dsum = cabs(cotanh(zz +(dsum))) elseif @mode_change == 2 dsum = cabs(log(zz +(dsum))) elseif @mode_change == 3 dsum = |log(zz +(dsum))| dave = |sqrt(dave)| elseif @mode_change == 4 dsum = |atan(zz +(dsum))| dave = |dave| elseif @mode_change == 5 dsum = |tanh(zz +(dsum))| dave = |dave| elseif @mode_change == 6 dsum = cabs(asin(zz +(dsum))) dave = cabs(dave) elseif @mode_change == 7 dsum = cabs(sqrt(zz +(dsum))) elseif @mode_change == 8 dsum = cabs(cos(zz +(dsum))) elseif @mode_change == 9 dsum = cabs(recip(zz +(dsum))) dave = dsum/(i+1) elseif @mode_change == 10 dsum = |recip(zz +(dsum))| dave = |sqrt(dave)| elseif @mode_change == 11 dsum = cabs(zz +(dsum)) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 12 dsum = cabs(zz +(dsum)) dave = cabs(log(dave)) elseif @mode_change == 13 dsum = cabs(zz +(dsum)) dave = cabs(atanh(dave)) elseif @mode_change == 14 dsum = cabs(round(zz +(dsum))) dave = cabs(recip(dave)) elseif @mode_change == 15 dsum = cabs(trunc(zz +(dsum))) dave = cabs(recip(dave)) elseif @mode_change == 16 dsum = cabs(round(zz +(dsum))) dave = cabs(log(dave)) elseif @mode_change == 17 dsum = cabs(trunc(zz +(dsum))) dave = cabs(log(dave)) endif endif if @follow == true if i >= @skip1 && i < @skip2 if @ver < 2.38 if @reverse if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif patnum = patnum + 1 else if @reverse == false if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif if @pattern != 0 patnum = patnum + 1 endif endif if (@trapalliterations == false || trapping) ; if we're checking for traps... if @traptype == "Closest" if zz < dist ti = i dist = zz+@edge/3 tz = z1 tz2 = #z trapped = true endif elseif @traptype == "First" if zz < @threshold ti = i dist = zz+@edge/3 tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Last" if zz < @threshold && !trapped ti = i dist = zz+@edge/3 tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Average" if zz < @threshold ti = i dist = dave + @edge/3 distance = dave tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Farthest" if zz > dist && zz < @threshold ti = i dist = zz + @edge/3 tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Sum" if zz < @threshold ti = i dist = distance + @edge/3 distance = distance + zz tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Sum Outline" if zz < @threshold ti = i dist = distance + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z trapped = true endif endif endif endif elseif @follow == false if @ver < 2.38 if @reverse if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif patnum = patnum + 1 else if @reverse == false if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif if @pattern != 0 patnum = patnum + 1 endif endif if (@trapalliterations == false || trapping) ; if we're checking for traps... if i >= @skip1 && i < @skip2 if @traptype == "Closest" if zz < dist ti = i dist = zz+@edge/3 tz = z1 tz2 = #z trapped = true endif elseif @traptype == "First" if zz < @threshold ti = i dist = zz+@edge/3 tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Last" if zz < @threshold && !trapped ti = i dist = zz+@edge/3 tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Average" if zz < @threshold ti = i dist = dave + @edge/3 distance = dave tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Farthest" if zz > dist && zz < @threshold ti = i dist = zz + @edge/3 tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Sum" if zz < @threshold ti = i dist = distance + @edge/3 distance = distance + zz tz = z1 tz2 = #z trapped = true endif elseif @traptype == "Sum Outline" if zz < @threshold ti = i dist = distance + @edge/3 distance = distance + dist + .1 tz = z1 tz2 = #z trapped = true endif endif endif endif endif endif i = i + 1 if @tm == 11 z_values[i] = z1 else z_values[i] = #z endif if @linear == "Linear" if @incTwr tw = tw + @twistrDegree endif if @incTwi tw = tw + @twistiDegree*(0,1) endif if @incTw2r tw2 = tw2 + @twist2rDegree endif if @incTw2i tw2 = tw2 + @twist2iDegree*(0,1) endif if @incTw3r tw3 = tw3 + @twist3rDegree endif if @incTw3i tw3 = tw3 + @twist3iDegree*(0,1) endif if @incTw4r tw4 = tw4 + @twist4rDegree endif if @incTw4i tw4 = tw4 + @twist4iDegree*(0,1) endif if @incTw5r tw5 = tw5 + @twist5rDegree endif if @incTw5i tw5= tw5 + @twist5iDegree*(0,1) endif if @incTw6r tw6 = tw6 + @twist6rDegree endif if @incTw6i tw6 = tw6 + @twist6iDegree*(0,1) endif if @incExp1r exp1 = exp1 + @exp1rDegree endif if @incExp1i exp1 = exp1 + @exp1iDegree*(0,1) endif if @incExp2r exp2 = exp2 + @exp2rDegree endif if @incExp2i exp2 = exp2 + @exp2iDegree*(0,1) endif if @incExp3r exp3 = exp3 + @exp3rDegree endif if @incExp3i exp3 = exp3 + @exp3iDegree*(0,1) endif if @incExp4r exp4 = exp4 + @exp4rDegree endif if @incExp4i exp4 = exp4 + @exp4iDegree*(0,1) endif if @incExp5r exp5 = exp5 + @exp5rDegree endif if @incExp5i exp5= exp5 + @exp5iDegree*(0,1) endif if @incExp6r exp6 = exp6 + @exp6rDegree endif if @incExp6i exp6 = exp6 + @exp6iDegree*(0,1) endif elseif @linear == "Non-Linear 1" if @incTwr tw = tw + @twistrDegree /(@twistrDegree-@speed) endif if @incTwi tw = tw + @twistiDegree /(@twistiDegree-@speed)*(0,1) endif if @incTw2r tw2 = tw2 + @twist2rDegree /(@twist2rDegree-@speed) endif if @incTw2i tw2 = tw2 + @twist2iDegree/(@twist2iDegree-@speed)*(0,1) endif if @incTw3r tw3 = tw3 + @twist3rDegree /(@twist3rDegree-@speed) endif if @incTw3i tw3 = tw3 + @twist3iDegree /(@twist3iDegree-@speed)*(0,1) endif if @incTw4r tw4 = tw4 + @twist4rDegree /(@twist4rDegree-@speed) endif if @incTw4i tw4 = tw4 + @twist4iDegree /(@twist4iDegree-@speed)*(0,1) endif if @incTw5r tw5 = tw5 + @twist5rDegree /(@twist5rDegree-@speed) endif if @incTw5i tw5= tw5 + @twist5iDegree/(@twist5iDegree-@speed)*(0,1) endif if @incTw6r tw6 = tw6 + @twist6rDegree /(@twist6rDegree-@speed) endif if @incTw6i tw6 = tw6 + @twist6iDegree /(@twist6iDegree-@speed)*(0,1) endif if @incExp1r exp1 = exp1 + @exp1rDegree /(@exp1rDegree-@speed) endif if @incExp1i exp1 = exp1 + @exp1iDegree/(@exp1iDegree-@speed)*(0,1) endif if @incExp2r exp2 = exp2 + @exp2rDegree /(@exp2rDegree-@speed) endif if @incExp2i exp2 = exp2 + @exp2iDegree /(@exp2iDegree-@speed)*(0,1) endif if @incExp3r exp3 = exp3 + @exp3rDegree /(@exp3rDegree-@speed) endif if @incExp3i exp3 = exp3 + @exp3iDegree /(@exp3iDegree-@speed)*(0,1) endif if @incExp4r exp4 = exp4 + @exp4rDegree /(@exp4rDegree-@speed) endif if @incExp4i exp4 = exp4 + @exp4iDegree /(@exp4iDegree-@speed)*(0,1) endif if @incExp5r exp5 = exp5 + @exp5rDegree /(@exp5rDegree-@speed) endif if @incExp5i exp5= exp5 + @exp5iDegree /(@exp5iDegree-@speed)*(0,1) endif if @incExp6r exp6 = exp6 + @exp6rDegree /(@exp6rDegree-@speed) endif if @incExp6i exp6 = exp6 + @exp6iDegree/(@exp6iDegree-@speed)*(0,1) endif elseif @linear == "Non-Linear 2" if @incTwr tw = tw + @twistrDegree /(@twistrDegree-1i*pi*@speed) endif if @incTwi tw = tw + @twistiDegree /(@twistiDegree-1i*pi*@speed)*(0,1) endif if @incTw2r tw2 = tw2 + @twist2rDegree /(@twist2rDegree-1i*pi*@speed) endif if @incTw2i tw2 = tw2 + @twist2iDegree/(@twist2iDegree-1i*pi*@speed)*(0,1) endif if @incTw3r tw3 = tw3 + @twist3rDegree /(@twist3rDegree-1i*pi*@speed) endif if @incTw3i tw3 = tw3 + @twist3iDegree /(@twist3iDegree-1i*pi*@speed)*(0,1) endif if @incTw4r tw4 = tw4 + @twist4rDegree /(@twist4rDegree-1i*pi*@speed) endif if @incTw4i tw4 = tw4 + @twist4iDegree /(@twist4iDegree-1i*pi*@speed)*(0,1) endif if @incTw5r tw5 = tw5 + @twist5rDegree /(@twist5rDegree-1i*pi*@speed) endif if @incTw5i tw5= tw5 + @twist5iDegree/(@twist5iDegree-1i*pi*@speed)*(0,1) endif if @incTw6r tw6 = tw6 + @twist6rDegree /(@twist6rDegree-1i*pi*@speed) endif if @incTw6i tw6 = tw6 + @twist6iDegree /(@twist6iDegree-1i*pi*@speed)*(0,1) endif if @incExp1r exp1 = exp1 + @exp1rDegree /(@exp1rDegree-1i*pi*@speed) endif if @incExp1i exp1 = exp1 + @exp1iDegree/(@exp1iDegree-1i*pi*@speed)*(0,1) endif if @incExp2r exp2 = exp2 + @exp2rDegree /(@exp2rDegree-1i*pi*@speed) endif if @incExp2i exp2 = exp2 + @exp2iDegree /(@exp2iDegree-1i*pi*@speed)*(0,1) endif if @incExp3r exp3 = exp3 + @exp3rDegree /(@exp3rDegree-1i*pi*@speed) endif if @incExp3i exp3 = exp3 + @exp3iDegree /(@exp3iDegree-1i*pi*@speed)*(0,1) endif if @incExp4r exp4 = exp4 + @exp4rDegree /(@exp4rDegree-1i*pi*@speed) endif if @incExp4i exp4 = exp4 + @exp4iDegree /(@exp4iDegree-1i*pi*@speed)*(0,1) endif if @incExp5r exp5 = exp5 + @exp5rDegree /(@exp5rDegree-1i*pi*@speed) endif if @incExp5i exp5= exp5 + @exp5iDegree /(@exp5iDegree-1i*pi*@speed)*(0,1) endif if @incExp6r exp6 = exp6 + @exp6rDegree /(@exp6rDegree-1i*pi*@speed) endif if @incExp6i exp6 = exp6 + @exp6iDegree/(@exp6iDegree-1i*pi*@speed)*(0,1) endif elseif @linear == "Non-Linear 3" if @incTwr tw = tw + @twistrDegree /(@twistrDegree-pi*@speed) endif if @incTwi tw = tw + @twistiDegree /(@twistiDegree-pi*@speed)*(0,1) endif if @incTw2r tw2 = tw2 + @twist2rDegree /(@twist2rDegree-pi*@speed) endif if @incTw2i tw2 = tw2 + @twist2iDegree/(@twist2iDegree-pi*@speed)*(0,1) endif if @incTw3r tw3 = tw3 + @twist3rDegree /(@twist3rDegree-pi*@speed) endif if @incTw3i tw3 = tw3 + @twist3iDegree /(@twist3iDegree-pi*@speed)*(0,1) endif if @incTw4r tw4 = tw4 + @twist4rDegree /(@twist4rDegree-pi*@speed) endif if @incTw4i tw4 = tw4 + @twist4iDegree /(@twist4iDegree-pi*@speed)*(0,1) endif if @incTw5r tw5 = tw5 + @twist5rDegree /(@twist5rDegree-pi*@speed) endif if @incTw5i tw5= tw5 + @twist5iDegree/(@twist5iDegree-pi*@speed)*(0,1) endif if @incTw6r tw6 = tw6 + @twist6rDegree /(@twist6rDegree-pi*@speed) endif if @incTw6i tw6 = tw6 + @twist6iDegree /(@twist6iDegree-pi*@speed)*(0,1) endif if @incExp1r exp1 = exp1 + @exp1rDegree /(@exp1rDegree-pi*@speed) endif if @incExp1i exp1 = exp1 + @exp1iDegree/(@exp1iDegree-pi*@speed)*(0,1) endif if @incExp2r exp2 = exp2 + @exp2rDegree /(@exp2rDegree-pi*@speed) endif if @incExp2i exp2 = exp2 + @exp2iDegree /(@exp2iDegree-pi*@speed)*(0,1) endif if @incExp3r exp3 = exp3 + @exp3rDegree /(@exp3rDegree-pi*@speed) endif if @incExp3i exp3 = exp3 + @exp3iDegree /(@exp3iDegree-pi*@speed)*(0,1) endif if @incExp4r exp4 = exp4 + @exp4rDegree /(@exp4rDegree-pi*@speed) endif if @incExp4i exp4 = exp4 + @exp4iDegree /(@exp4iDegree-pi*@speed)*(0,1) endif if @incExp5r exp5 = exp5 + @exp5rDegree /(@exp5rDegree-pi*@speed) endif if @incExp5i exp5= exp5 + @exp5iDegree /(@exp5iDegree-pi*@speed)*(0,1) endif if @incExp6r exp6 = exp6 + @exp6rDegree /(@exp6rDegree-pi*@speed) endif if @incExp6i exp6 = exp6 + @exp6iDegree/(@exp6iDegree-pi*@speed)*(0,1) endif endif final: if trapped if @im == false && dist > @msk && !(@msk == 0) #solid = true sol = true endif if @im == true && dist <= @msk && !(@msk == 0) #solid = true sol = true endif if @ta > 0 && @tm > 0 && ti >= icm && ti <= ico && @co == true #solid = true sol = true endif if @pta > 0 && @ptt > 0 && (ti > ico || ti < icm) && @co == true #solid = true sol = true endif if sol == false dist = dist ^ .1 complex pt3 = (0,0) ;********************************************** if @cm == 1 || @cm == 8 \ || (!(@ta == 0) && !(@tm == 0))\ || (!(@pta == 0) && @ptt > 8) \ || ((@ptt == 0) && @cm == 9) float rz = 0 float iz = 0 float fr = 0 float fi = 0 float a1 = 0 float a3 = 0 float a4 = 0 float h = 1 float ez = 0 float rsc = real(@nsc) if @ur == false float isc = imag(@nsc) else float isc = rsc endif if @r < 0 pt1 = abs(@fn7(tz))^(@tp*.05) else pt1 = abs(@fn7(tz^(@tp*.05))) endif pt2 = (0,0) pt2 = -pt1-abs(acosh(pt2)) w = acosh(pt2*10^(8))*10 pt3 = (acosh(w - round(w))) if !(@cm == 8) if @tm == 0 if @pct == false zr = real(@fn5(pt3)/rsc) zi = imag(@fn6(w)/isc) else zr = cabs(@fn5(pt3)/rsc*.5) zi = cabs(@fn6(pt3)/isc*2) endif elseif @tm == 1 if @pct == false zr = cabs(@fn5(dist)/rsc) zi = cabs(@fn6(w)/isc*2) else zr = real(@fn5(pt3)/rsc) zi = imag(@fn6(tz)/isc) endif elseif @tm == 2 if @pct == false zr = cabs(@fn5(dist)/rsc) zi = imag(@fn6(w)/isc) else zr = real(@fn5(tz)/rsc) zi = imag(@fn6(pt3)/isc) endif elseif @tm == 3 if @pct == false zr = cabs(@fn5(dist)/rsc) zi = real(@fn6(pt3)/isc) else zr = cabs(@fn5(dist)/rsc) zi = cabs(@fn6(pt3)/isc) endif elseif @tm == 4 if @pct == false zr = real(@fn5(pt2)/rsc*.5) zi = imag(@fn6(w)/isc) else zr = cabs(@fn5(pt2)/rsc*.5) zi = imag(@fn6(w)/isc) endif elseif @tm == 5 if @pct == false zr = real(@fn5(tz)/rsc) zi = imag(@fn6(w)/isc) else zr = imag(@fn5(tz)/rsc) zi = real(@fn6(w)/isc) endif elseif @tm == 6 if @pct == false zr = real(@fn5(tz)/rsc) zi = cabs(@fn6(pt3)/isc) else zr = cabs(@fn5(pt1)/rsc) zi = cabs(@fn6(w)/isc) endif elseif @tm == 7 if @pct == false zr = real(@fn5(pt3)/rsc/10) zi = imag(@fn6(pt2)/isc*.5) else zr = cabs(@fn5(pt3)/rsc/50) zi = imag(@fn6(pt2)/isc*1.3) endif elseif @tm == 8 ww = @fn7(pt2*100) if @pct == false zr = imag(@fn5(pt2)/rsc*10) zi = imag(@fn6(ww)/isc*5) else zr = cabs(@fn5(dist)/rsc) zi = imag(@fn6(ww)/isc) endif elseif @tm == 9 if @pct == false zr = cabs(@fn5(dist)/rsc*5) zi = real(@fn6(tz)/isc*5) else zr = cabs(@fn5(dist)/rsc*5) zi = imag(@fn6(tz)/isc*5) endif elseif @tm == 10 complex z_values_ti_1 if ti > 0 z_values_ti_1 = z_values[ti - 1] else z_values_ti_1 = (0, 0) endif if @pct == false zr = real(@fn5((z_values[ti]-z_values_ti_1)/rsc)) zi = imag(@fn6((z_values[ti]+z_values_ti_1)/isc*10)) else zr = real(@fn5(tz)/rsc) zi = imag(@fn6(tz)/isc) endif elseif @tm == 11 if ti > 0 z_values_ti_1 = z_values[ti - 1] else z_values_ti_1 = (0, 0) endif if @pct == false zr = real(@fn5((z_values[ti]-z_values_ti_1)/rsc)) zi = imag(@fn6((z_values[ti]+z_values_ti_1)/isc*10)) else zr = real(@fn5(tz)/rsc) zi = imag(@fn6(tz)/isc) endif endif zr = zr + rn/10 zi = zi - rn/10 rz = floor(zr) iz = floor(zi) a1 = cabs(@fn3(@fn1(rz-1) + @fn2(iz-1))) a1 = (a1 % (2^@f))/2^(@f-1) * (@tb%2) a2 = cabs(@fn3(@fn1(rz-1) + @fn2(iz+1))) a2 = (a2 % (2^@f))/2^(@f-1) * trunc(@tb%4/2) a3 = cabs(@fn3(@fn1(rz+1) + @fn2(iz-1))) a3 = (a3 % (2^@f))/2^(@f-1) * trunc(@tb%8/4) a4 = cabs(@fn3(@fn1(rz+1) + @fn2(iz+1))) a4 = (a4 % (2^@f))/2^(@f-1) * trunc(@tb%16/8) i = 1 repeat h = h / 2 fr = rz + h fi = iz + h za = (a1 + a2 + a3 + a4) / 4 ez = ez * h + za if (zr > fr) rz = fr if (zi > fi) iz = fi a1 = ez else a2 = ez endif else if (zi > fi) iz = fi a3 = ez else a4 = ez endif endif i = i + 1 until i >= abs(@step) if ti >= icm && ti > ico || ti < icm || @sk == 0 za = (za-trunc(za))^@v2 else za = 0 endif endif endif ; --------------------------------------------------------- ; ********************************************************* if !(@cm == 1) && (@cm == 9 || (!(@ptt == 0) && !(@pta == 0))) float df = 1 pt3 = @pto float scale = abs(@psc)*.2 if @ptt == 1 ; Patterns 1 pt1 = abs(@fn7(tz))^(@tp*.5) scale = scale * 15 if @pff < 5 pt3 = -abs(@fn6(acosh(pt1)*(@pff+.0001))) else pt3 = -abs(@fn6(acosh(pt1*@pff))) endif elseif @ptt == 2 ; Patterns 2 pt1 = abs(@pto-sqr(@fn7(tz^(@tp*.5)))/cabs(@pto+(.0001,.0001))) scale = scale * 20 pt3 = -abs(@fn6(acosh(pt1)*(@pff+.0001))) elseif @ptt == 3 ; Patterns 3 scale=scale*15, pt1 = abs(@fn7(tz))^(@tp*.5) pt3 = -pt1*(@pff+.0001)-abs(acosh(@fn6(pt3+2))) elseif @ptt == 4 ; Patterns 4 scale=scale*20, pt1 = abs(@fn7(tz))^(@tp*.5) pt3 = -pt1*(@pff-.25)-abs(acos(@fn6(pt1))) elseif @ptt == 5 ; Patterns 5 #z pt1 = abs(@fn7(@pto-gc))^(@tp*.05) scale = scale * 25 pt3 = -abs(@fn6(pt1))*(@pff+.0001) elseif @ptt == 6 ; Patterns 6 #pixel PixDis = real(#pixel)-real(#center) \ +flip(imag(#pixel)-imag(#center)) pt1 = abs(@fn7(tz))^(@tp*.05) scale = scale * 7.5 pt3 = @fn6(PixDis)-pt1*(@pff-1) elseif @ptt == 7 ; Fuzz 1 pt1 = abs(@fn7(tz))^(@tp*.05) scale = scale * 50 pt3 = -abs(@fn6(acosh(sin(#pixel*(@pff+1)))))-pt1 elseif @ptt == 8 ; Fuzz 2 PixDis = real(#pixel)-real(#center) \ +flip(imag(#pixel)-imag(#center)) pt1 = abs(@fn7(pt3-tz))^(@tp*.05) scale = scale * 50 pt3 = -pt1-abs(@fn6(acosh(sin(PixDis)*@pff))) elseif @ptt == 9 ; Tri - Patterns 1 df = .2, scale = scale * 1.25, pt1 = abs(@fn6(gc))^(@tp*.05) pt3 = -abs((tz^za)/pt1)*@pff elseif @ptt == 10 ; Tri - Patterns 2 df = .2, pt1 = abs(@fn6(tz))^(@tp*.05) scale = scale * 15, pt3 = -abs(za^.1/pt1)*@pff elseif @ptt == 11 || @ptt == 0 ; Tri - Patterns 3 df = .2 pt3 = @fn6(tz*za)^@tp*@pff elseif @ptt == 12 ; Tri - Patterns 4 df = .2, scale=scale*5 pt3 = @fn6(-pt1-abs(acos(sin(za/10-tz/10)*@pff))) elseif @ptt == 13 ; Tri - Patterns 5 df = .2 pt3 = -abs(@fn7(@fn6(tz+za)))*@pff elseif @ptt == 14 ; Tri - Patterns 6 df = .2 pt3 = @fn6(tz)-za*@pff elseif @ptt == 15 ; Tri - Patterns 7 df = .2, scale = scale * 2 pt3 = @fn6(tz)-za*(@pff) endif if ti > ico || ti < icm pt3 = (ti + flip(-ti))*icd endif if @pct == true scale = scale * 2 endif w = acosh(pt3*10^8)*scale pt3 = (w - round(w)) if @pct == true pt3 = @fn5(pt3) else pt3 = @fn5(acosh(pt3)) endif if (@ptt == 0) && !(@cm == 9) texFin = 0 else texFin = cabs(pt3+@pto^@ptm)*@ptd*df if !(@pta == 0) texFin = (texFin - trunc(texFin))*@pta else texFin = (texFin - trunc(texFin))*.25 endif endif endif if tx > 0 if @ztyp == "#z" tzz = ((#z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Morph z" tzz = ((z1-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trap z" tzz = ((tz-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trap #z" tzz = ((tz2-@txia1)*@txib1)^@txic1 elseif @ztyp == "Dist" tzz = ((dist-@txia1)*@txib1)^@txic1 endif if @ttt == 0 tzz = @fntx2(@fntx1(tzz))^@exad1 elseif @ttt == 1 tzz = @fntx1(real(tzz))^@exad1+@fntx2(imag(tzz))^@exad2 elseif @ttt == 2 tzz = @fntx1(real(tzz))^@exad1-@fntx2(imag(tzz))^@exad2 elseif @ttt == 3 tzz = @fntx1(real(tzz))^@exad1*@fntx2(imag(tzz))^@exad2 elseif @ttt == 4 tzz = @fntx1(imag(tzz))^@exad1-@fntx2(real(tzz))^@exad2 elseif @ttt == 5 tzz = @fntx2(@fntx1(x))^@exad1 elseif @ttt == 6 tzz = @fntx2(@fntx1(y))^@exad1 elseif @ttt == 7 tzz = @fntx1(x)^@exad1+@fntx2(y)^@exad2 elseif @ttt == 8 tzz = @fntx1(x)^@exad1-@fntx2(y)^@exad2 elseif @ttt == 9 tzz = @fntx2(y)^@exad2-@fntx1(x)^@exad1 elseif @ttt == 10 tzz = @fntx1(x)^@exad1*@fntx2(y)^@exad2 elseif @ttt == 11 tzz = @fntx1(x)^@exad1/@fntx2(y)^@exad2 elseif @ttt == 12 tzz = @fntx2(y)^@exad2/@fntx1(x)^@exad1 elseif @ttt == 13 tzz = @fntx1(x)^@exad1^@fntx2(y)^@exad2 elseif @ttt == 14 tzz = @fntx2(y)^@exad1^@fntx1(x)^@exad2 elseif @ttt == 15 tzz = @fntx1(x)^@exad1+@fntx2(tzz)^@exad2 elseif @ttt == 16 tzz = @fntx1(x)^@exad1-@fntx2(tzz)^@exad2 elseif @ttt == 17 tzz = @fntx2(tzz)^@exad2-@fntx1(x)^@exad1 elseif @ttt == 18 tzz = @fntx1(x)^@exad1*@fntx2(tzz)^@exad2 elseif @ttt == 19 tzz = @fntx1(x)^@exad1/@fntx2(tzz)^@exad2 elseif @ttt == 20 tzz = @fntx2(tzz)^@exad2/@fntx1(x)^@exad1 elseif @ttt == 21 tzz = @fntx1(y)^@exad1+@fntx2(tzz)^@exad2 elseif @ttt == 22 tzz = @fntx1(y)^@exad1-@fntx2(tzz)^@exad2 elseif @ttt == 23 tzz = @fntx2(tzz)^@exad2-@fntx1(y)^@exad1 elseif @ttt == 24 tzz = @fntx1(y)^@exad1*@fntx2(tzz)^@exad2 elseif @ttt == 25 tzz = @fntx1(y)^@exad1/@fntx2(tzz)^@exad2 elseif @ttt == 26 tzz = @fntx2(tzz)^@exad2/@fntx1(y)^@exad1 endif float zrr = real(tzz)%(@tv/10)/@ts*10 float zii = imag(tzz)%(@tv/10)/@ts*10 float rzz = floor(zrr) float izz = floor(zii) if @tcc > 0 float a1a = (rzz + izz - 2)/ct float a2a = (rzz + izz + 2)/ct else float a1a = (rzz + izz - 2)%ct float a2a = (rzz + izz + 2)%ct endif float a3a = a1a float a4a = a2a i = 0 float ezz = 0 float ho = 1 repeat ho = ho / 2 float frr = rzz + ho float fii = izz + ho float zaa = (a1a + a2a + a3a + a4a) / 4 ezz = ezz + zaa if (zrr > frr) zrr = frr if (zii > fii) izz = fii a1a = ezz else a2a = ezz endif else if (zii > fii) izz = fii a3a = ezz else a4a = ezz endif endif i = i + 1 until i >= 20 endif t3 = real(abs((zaa-real(@fntx3(zaa))))) if @add_sgn == false t3 = (zaa-real(@fntx3(zaa))) endif ;Random complex hasard = #random texture_rnd = 10 * @rnd * (real(hasard)+ imag(hasard)) ; fBm if (@fbmtxt != 0) r1 = (0,1) ^ (@fbmangle / 90.0) r2 = (0,1) ^ (@fbmastep / 90.0) if @ztyp4 == "#z" tzz = ((#z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Morph z" tzz = ((z1-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trap z" tzz = ((tz-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trap #z" tzz = ((tz2-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Dist" tzz = ((dist-@txia4)*@txib4)^@txic4 endif if @fbminit == 0 pfb = (@fntx9(@fntx8(tzz))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 1 pfb = (@fntx8(real(tzz))^@exad8+@fntx9(imag(tzz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 2 pfb = (@fntx8(real(tzz))^@exad8-@fntx9(imag(tzz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 3 pfb = (@fntx8(real(tzz))^@exad8*@fntx9(imag(tzz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 4 pfb = (@fntx8(imag(tzz))^@exad8-@fntx9(real(tzz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 5 pfb = (@fntx9(@fntx8(x))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 6 pfb = (@fntx9(@fntx8(y))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 7 pfb = (@fntx8(x)^@exad8+@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 8 pfb = (@fntx8(x)^@exad8-@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 9 pfb = (@fntx9(y)^@exad9-@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 10 pfb = (@fntx8(x)^@exad8*@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 11 pfb = (@fntx8(x)^@exad8/@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 12 pfb = (@fntx9(y)^@exad9/@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 13 pfb = (@fntx8(x)^@exad8^@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 14 pfb = (@fntx9(y)^@exad9^@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 15 pfb = (@fntx8(x)^@exad8+@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 16 pfb = (@fntx8(x)^@exad8-@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 17 pfb = (@fntx9(tzz)^@exad9-@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 18 pfb = (@fntx8(x)^@exad8*@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 19 pfb = (@fntx8(x)^@exad8/@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 20 pfb = (@fntx9(tzz)^@exad9/@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 21 pfb = (@fntx8(y)^@exad8+@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 22 pfb = (@fntx8(y)^@exad8-@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 23 pfb = (@fntx9(tzz)^@exad9-@fntx8(y)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 24 pfb = (@fntx8(y)^@exad8*@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 25 pfb = (@fntx8(y)^@exad8/@fntx9(tzz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 26 pfb = (@fntx9(tzz)^@exad9/@fntx8(y)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 27 pfb = (@fntx9(@fntx8(pixel))^@exad8)* @fbmscale * r1 + @fbmoffset endif float summ = 0.0 float freq = 1.0 int i = @fbmoct while (i > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = real(@fbmrfn2(@fbmrfn1(pfb))) % 256 float by0 = imag(@fbmifn2(@fbmifn1(pfb))) % 256 if (bx0 < 0) bx0 = bx0 + 256 endif if (by0 < 0) by0 = by0 + 256 endif float bx1 = (bx0 + @c) % 256 float by1 = (by0 + @d) % 256 float rx0 = real(pfb) - floor(real(pfb)) float ry0 = imag(pfb) - floor(imag(pfb)) float rx1 = rx0 - @a float ry1 = ry0 - @b float b00 = (bx0^@fbmpower % 65536 + by0)^@fbmpower % 65536 float b10 = (bx1^@fbmpower % 65536 + by0)^@fbmpower % 65536 float b01 = (bx0^@fbmpower % 65536 + by1)^@fbmpower % 65536 float b11 = (bx1^@fbmpower % 65536 + by1)^@fbmpower % 65536 float g_b00_0 = (b00)^@fbmpower*0.25 % 512 - 256 float g_b10_0 = (b10)^@fbmpower*0.25 % 512 - 256 float g_b01_0 = (b01)^@fbmpower*0.25 % 512 - 256 float g_b11_0 = (b11)^@fbmpower*0.25 % 512 - 256 float g_b00_1 = (b00+1)^@fbmpower*0.25 % 512 - 256 float g_b10_1 = (b10+1)^@fbmpower*0.25 % 512 - 256 float g_b01_1 = (b01+1)^@fbmpower*0.25 % 512 - 256 float g_b11_1 = (b11+1)^@fbmpower*0.25 % 512 - 256 float ddd = 0.0; ddd = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * ddd g_b00_1 = g_b00_1 * ddd ddd = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * ddd g_b10_1 = g_b10_1 * ddd ddd = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * ddd g_b01_1 = g_b01_1 * ddd ddd = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * ddd g_b11_1 = g_b11_1 * ddd float u1 = rx0 * g_b00_0 + ry0 * g_b00_1 float v1 = rx1 * g_b10_0 + ry0 * g_b10_1 float u2 = rx0 * g_b01_0 + ry1 * g_b01_1 float v2 = rx1 * g_b11_0 + ry1 * g_b11_1 float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float aaa = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) summ = summ + (aaa + sy*(b-aaa))*freq freq = freq * @fbmstep pfb = pfb * r2 / @fbmstep i = i - 1 endwhile texture_fbm = 10 * @fbmtxt * summ endif if @fbm_limit !=0 texture_fbm= texture_fbm % @fbm_limit endif if @fbm_sgn == true texture_fbm = abs(texture_fbm) endif ;decimal if @dectxt > 0 if @ztyp2 == "#z" tzz = ((#z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Morph z" tzz = ((z1-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap z" tzz = ((tz-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap #z" tzz = ((tz2-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Dist" tzz = ((dist-@txia2)*@txib2)^@txic2 endif if @dec_init == 0 pd = real(@fntx5(@fntx4(tzz))^@exad4) elseif @dec_init == 1 pd = real(@fntx4(real(tzz))^@exad4+@fntx5(imag(tzz))^@exad5) elseif @dec_init == 2 pd = real(@fntx4(real(tzz))^@exad4-@fntx5(imag(tzz))^@exad5) elseif @dec_init == 3 pd = real(@fntx4(real(tzz))^@exad4*@fntx5(imag(tzz))^@exad5) elseif @dec_init == 4 pd = real(@fntx4(imag(tzz))^@exad4-@fntx5(real(tzz))^@exad5) elseif @dec_init == 5 pd = real(@fntx5(@fntx4(x))^@exad4) elseif @dec_init == 6 pd = real(@fntx5(@fntx4(y))^@exad4) elseif @dec_init == 7 pd = real(@fntx4(x)^@exad4+@fntx5(y)^@exad5) elseif @dec_init == 8 pd = real(@fntx4(x)^@exad4-@fntx5(y)^@exad5) elseif @dec_init == 9 pd = real(@fntx5(y)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 10 pd = real(@fntx4(x)^@exad4*@fntx5(y)^@exad5) elseif @dec_init == 11 pd = real(@fntx4(x)^@exad4/@fntx5(y)^@exad5) elseif @dec_init == 12 pd = real(@fntx5(y)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 13 pd = real(@fntx4(x)^@exad4^@fntx5(y)^@exad5) elseif @dec_init == 14 pd = real(@fntx5(y)^@exad4^@fntx4(x)^@exad5) elseif @dec_init == 15 pd = real(@fntx4(x)^@exad4+@fntx5(tzz)^@exad5) elseif @dec_init == 16 pd = real(@fntx4(x)^@exad4-@fntx5(tzz)^@exad5) elseif @dec_init == 17 pd = real(@fntx5(tzz)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 18 pd = real(@fntx4(x)^@exad4*@fntx5(tzz)^@exad5) elseif @dec_init == 19 pd = real(@fntx4(x)^@exad4/@fntx5(tzz)^@exad5) elseif @dec_init == 20 pd = real(@fntx5(tzz)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 21 pd = real(@fntx4(y)^@exad4+@fntx5(tzz)^@exad5) elseif @dec_init == 22 pd = real(@fntx4(y)^@exad4-@fntx5(tzz)^@exad5) elseif @dec_init == 23 pd = real(@fntx5(tzz)^@exad4-@fntx4(y)^@exad5) elseif @dec_init == 24 pd = real(@fntx4(y)^@exad4*@fntx5(tzz)^@exad5) elseif @dec_init == 25 pd = real(@fntx4(y)^@exad4/@fntx5(tzz)^@exad5) elseif @dec_init == 26 pd = real(@fntx5(tzz)^@exad4/@fntx4(y)^@exad5) endif if @dec_type == 0 pd = pd-ceil(pd*@dec_scale)/@dec_scale elseif @dec_type == 1 pd = pd-floor(pd*@dec_scale)/@dec_scale elseif @dec_type == 2 pd = pd-trunc(pd*@dec_scale)/@dec_scale elseif @dec_type == 3 pd = pd-round(pd*@dec_scale)/@dec_scale elseif @dec_type == 4 pd = pd-real(@fndec(pd*@dec_scale))/@dec_scale elseif @dec_type == 5 pd = pd-round(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 6 pd = pd-round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 7 pd = pd+round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 8 pd = pd-round(pd*@dec_scale)/@dec_scale-trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 9 pd = pd-round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 10 pd = pd+round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 11 pd = pd-trunc(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 12 pd = pd-trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 13 pd = pd+trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 14 pd = pd-trunc(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 15 pd = pd-trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 16 pd = pd+trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 17 pd = pd-ceil(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 18 pd = pd-ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 19 pd = pd+ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale)/@dec_scale2 endif if @dec_size != 0 pd = pd/@dec_size endif texture_dec = @dectxt*pd if @dec_limit !=0 texture_dec= texture_dec%@dec_limit endif if @dec_sgn == true texture_dec = abs(texture_dec) endif endif texture_dec = 10 * texture_dec * @decamt if (@gnarl_amt != 0) if @ztyp3 == "#z" tzz = ((#z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Morph z" tzz = ((z1-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap z" tzz = ((tz-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap #z" tzz = ((tz2-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Dist" tzz = ((dist-@txia3)*@txib3)^@txic3 endif if @gnarl_init == 0 p = @fntx7(@fntx6(tzz))^@exad6 elseif @gnarl_init == 1 p = @fntx6(real(tzz))^@exad6+@fntx7(imag(tzz))^@exad7 elseif @gnarl_init == 2 p = @fntx6(real(tzz))^@exad6-@fntx7(imag(tzz))^@exad7 elseif @gnarl_init == 3 p = @fntx6(real(tzz))^@exad6*@fntx7(imag(tzz))^@exad7 elseif @gnarl_init == 4 p = @fntx6(imag(tzz))^@exad6-@fntx7(real(tzz))^@exad7 elseif @gnarl_init == 5 p = @fntx7(@fntx6(x))^@exad6 elseif @gnarl_init == 6 p = @fntx7(@fntx6(y))^@exad6 elseif @gnarl_init == 7 p = @fntx6(x)^@exad6+@fntx7(y)^@exad7 elseif @gnarl_init == 8 p = @fntx6(x)^@exad6-@fntx7(y)^@exad7 elseif @gnarl_init == 9 p = @fntx7(y)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 10 p = @fntx6(x)^@exad6*@fntx7(y)^@exad7 elseif @gnarl_init == 11 p = @fntx6(x)^@exad6/@fntx7(y)^@exad7 elseif @gnarl_init == 12 p = @fntx7(y)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 13 p = @fntx6(x)^@exad6^@fntx7(y)^@exad7 elseif @gnarl_init == 14 p = @fntx7(y)^@exad6^@fntx6(x)^@exad7 elseif @gnarl_init == 15 p = @fntx6(x)^@exad6+@fntx7(tzz)^@exad7 elseif @gnarl_init == 16 p = @fntx6(x)^@exad6-@fntx7(tzz)^@exad7 elseif @gnarl_init == 17 p = @fntx7(tzz)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 18 p = @fntx6(x)^@exad6*@fntx7(tzz)^@exad7 elseif @gnarl_init == 19 p = @fntx6(x)^@exad6/@fntx7(tzz)^@exad7 elseif @gnarl_init == 20 p = @fntx7(tzz)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 21 p = @fntx6(y)^@exad6+@fntx7(tzz)^@exad7 elseif @gnarl_init == 22 p = @fntx6(y)^@exad6-@fntx7(tzz)^@exad7 elseif @gnarl_init == 23 p = @fntx7(tzz)^@exad6-@fntx6(y)^@exad7 elseif @gnarl_init == 24 p = @fntx6(y)^@exad6*@fntx7(tzz)^@exad7 elseif @gnarl_init == 25 p = @fntx6(y)^@exad6/@fntx7(tzz)^@exad7 elseif @gnarl_init == 26 p = @fntx7(tzz)^@exad6/@fntx6(y)^@exad7 elseif @gnarl_init == 27 p = @fntx7(@fntx6(pixel))^@exad6 endif if @gnarl_scaling == 0 p = p-ceil(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 1 p = p-floor(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 2 p = p-trunc(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 3 p = p-round(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 4 p = p-real(@fngnarl(p*@gnarl_scale))/@gnarl_scale elseif @gnarl_scaling == 5 p = p-round(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 6 p = p-round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 7 p = p+round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 8 p = p-round(p*@gnarl_scale)/@gnarl_scale-trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 9 p = p-round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 10 p = p+round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 11 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 12 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 13 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 14 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 15 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 16 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 17 p = p-ceil(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 18 p = p-ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 19 p = p+ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale)/@gnarl_scale2 endif if @gnarl_size != 0 p = p/@gnarl_size endif xx = real(p) yy = imag(p) float xOld = 0 int iter3 = @gnarl_octaves while (iter3 > 0) iter3 = iter3-1 xOld = xx if @gnarl_form == 0 xx = xx - sin(yy + sin(yy)) yy = yy - sin(xOld + sin(xOld)) elseif @gnarl_form == 1 xx = xx - sin(yy + log(yy + cos(yy))) yy = yy - sin(xOld + log(xOld + cos(xOld))) elseif @gnarl_form == 2 xx = xx - sin(yy + cos(yy)) yy = yy - sin(xOld + cos(xOld)) elseif @gnarl_form == 3 xx = xx - sin(yy + log(yy + tan(yy))) yy = yy - sin(xOld + log(xOld + tan(xOld))) elseif @gnarl_form == 4 xx = xx - sin(yy + log(yy + sin(yy))) yy = yy - sin(xOld + log(xOld + sin(xOld))) endif endwhile if (@gnarl_type == 0) texture_gna = real(@fng(xx)) elseif (@gnarl_type == 1) texture_gna = real(@fng(yy)) elseif (@gnarl_type == 2) texture_gna = real(@fng(xx+yy)) elseif (@gnarl_type == 3) texture_gna = real(@fng(xx*yy)) elseif (@gnarl_type == 4) texture_gna = real(@fng(xx-yy)) elseif (@gnarl_type == 5) texture_gna = real(@fng(xx/yy)) elseif (@gnarl_type == 6) texture_gna = real(@fng(yy/xx)) elseif (@gnarl_type == 7) texture_gna = real(@fng(xx^yy)) elseif (@gnarl_type == 8) texture_gna = real(@fng(yy^xx)) elseif (@gnarl_type == 9) texture_gna = real(@fng(1/xx)) elseif (@gnarl_type == 10) texture_gna = real(@fng(1/yy)) elseif (@gnarl_type == 11) texture_gna = atan2(xx+1i*yy)/(2*#pi) if (texture_gna < 0) texture_gna = texture_gna + 1 endif elseif (@gnarl_type == 12) texture_gna = |xx+1i*yy| elseif (@gnarl_type == 13) texture_gna = (xx+yy+|xx+1i*yy|)/3 elseif (@gnarl_type == 14) texture_gna = (xx*yy*|xx+1i*yy|)^(1/3) endif if @gnarl_limit !=0 texture_gna= 10 * (texture_gna%@gnarl_limit) * @gnarl_amt endif endif ;geometrix if (@trtxt != 0) if @ztyp5 == "#z" tzz = ((#z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Morph z" tzz = ((z1-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap z" tzz = ((tz-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap #z" tzz = ((tz2-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Dist" tzz = ((dist-@trxia)*@trxib)^@trxic endif if @trinit == 0 ptr = (@fntx11(@fntx10(tzz))^@exad10) elseif @trinit == 1 ptr = (@fntx10(real(tzz))^@exad10+@fntx11(imag(tzz))^@exad11) elseif @trinit == 2 ptr = (@fntx10(real(tzz))^@exad10-@fntx11(imag(tzz))^@exad11) elseif @trinit == 3 ptr = (@fntx10(real(tzz))^@exad10*@fntx11(imag(tzz))^@exad11) elseif @trinit == 4 ptr = (@fntx10(imag(tzz))^@exad10-@fntx11(real(tzz))^@exad11) elseif @trinit == 5 ptr = (@fntx11(@fntx10(x))^@exad10) elseif @trinit == 6 ptr = (@fntx11(@fntx10(y))^@exad10) elseif @trinit == 7 ptr = (@fntx10(x)^@exad10+@fntx11(y)^@exad11) elseif @trinit == 8 ptr = (@fntx10(x)^@exad10-@fntx11(y)^@exad11) elseif @trinit == 9 ptr = (@fntx11(y)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 10 ptr = (@fntx10(x)^@exad10*@fntx11(y)^@exad11) elseif @trinit == 11 ptr = (@fntx10(x)^@exad10/@fntx11(y)^@exad11) elseif @trinit == 12 ptr = (@fntx11(y)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 13 ptr = (@fntx10(x)^@exad10^@fntx11(y)^@exad11) elseif @trinit == 14 ptr = (@fntx11(y)^@exad11^@fntx10(x)^@exad10) elseif @trinit == 15 ptr = (@fntx10(x)^@exad10+@fntx11(tzz)^@exad11) elseif @trinit == 16 ptr = (@fntx10(x)^@exad10-@fntx11(tzz)^@exad11) elseif @trinit == 17 ptr = (@fntx11(tzz)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 18 ptr = (@fntx10(x)^@exad10*@fntx11(tzz)^@exad11) elseif @trinit == 19 ptr = (@fntx10(x)^@exad10/@fntx11(tzz)^@exad11) elseif @trinit == 20 ptr = (@fntx11(tzz)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 21 ptr = (@fntx10(y)^@exad10+@fntx11(tzz)^@exad11) elseif @trinit == 22 ptr = (@fntx10(y)^@exad10-@fntx11(tzz)^@exad11) elseif @trinit == 23 ptr = (@fntx11(tzz)^@exad11-@fntx10(y)^@exad10) elseif @trinit == 24 ptr = (@fntx10(y)^@exad10*@fntx11(tzz)^@exad11) elseif @trinit == 25 ptr = (@fntx10(y)^@exad10/@fntx11(tzz)^@exad11) elseif @trinit == 26 ptr = (@fntx11(tzz)^@exad11/@fntx10(y)^@exad10) endif endif complex tzz = z_values[#numiter-1] float zrzr = real(@fnzr(ptr))*@scc float zizi = imag(@fnzi(ptr))*@scc float rzrz = real(@georfn2(@georfn(zrzr))) float iziz = imag(@geoifn2(@geoifn(zizi))) r0r0 = rzrz - 1 i0i0 = iziz - 1 r1r1 = rzrz + 1 i1i1 = iziz + 1 azaz = cabs(@fn1tx(r0r0) + @fn2tx(i0i0)) azaz = cabs(@fn3tx(azaz)) azaz = (azaz % @shad1 * 2) bzbz = cabs(@fn1tx(r1r1) + @fn2tx(i0i0)) bzbz = cabs(@fn3tx(bzbz)) bzbz = (bzbz % @shad2 * 2) czcz = cabs(@fn1tx(r1r1) + @fn2tx(i1i1)) czcz = cabs(@fn3tx(czcz)) czcz = (czcz % @shad3 * 2) dzdz = cabs(@fn1tx(r0r0) + @fn2tx(i1i1)) dzdz = cabs(@fn3tx(dzdz)) dzdz = (dzdz % @shad4 * 2) i = 1 repeat avav = avav / (@trp1 * 2) xbxb = xbxb / (@trp2 * 2) frfr = rzrz + avav fifi = iziz + avav zaza = (azaz + bzbz + czcz + dzdz) / (@trp3 * 4) zzzz = zzzz * xbxb + zaza if (zrzr > frfr) if (zizi > fifi) rzrz = frfr iziz = fifi azaz = zzzz else rzrz = frfr dzdz = zzzz endif else if (zizi > fifi) iziz = fifi bzbz = zzzz else czcz = zzzz endif endif i = i + 1 until i >= @freq texture_tr = (zaza-trunc(zaza)^@exp*2)*@trtxt if @geo_limit != 0 texture_tr = ((zaza-trunc(zaza)^@exp*2)% @geo_limit)*@trtxt endif if @geo_sgn == true texture_tr = abs(texture_tr) endif texture = (texture_rnd + texture_fbm + texture_dec + texture_gna \ + texture_tr)*@txamt/10000 ;**************************** if @tm == 0 t2 = 0 endif float tmp = dist if (@cm == 1) tmp = real(((@colorFn(za-@tz1)*@tz2)^@tz3)*(@ta+1)) elseif (@cm == 2) tmp = real((@colorFn(ti-@tz1)*@tz2)^@tz3)*.1 elseif (@cm == 3) tmp = real((@colorFn(ti-@tz1)*@tz2)^@tz3)%abs(@mc)*.8 elseif (@cm == 4) tmp = cabs((@colorFn(tz-@tz1)*@tz2)^@tz3)^.1 elseif (@cm == 5) tmp = abs(real((@colorFn(tz-@tz1)*@tz2)^@tz3))^.1 elseif (@cm == 6) tmp = abs(imag((@colorFn(tz-@tz1)*@tz2)^@tz3))^.1 elseif (@cm == 7) tmp = abs(atan2((@colorFn(tz-@tz1)*@tz2)^@tz3)/pi) elseif (@cm == 8) tmp = cabs((@colorFn(pt3-@tz1)*@tz2)^@tz3) elseif (@cm == 9) tmp = 0 endif float #index = 0 if @shade == "normal" if !(@cm == 1) #index = cabs(tmp^2 + .1*@dep2) + za*@ta*t2 + texFin + texture +(tx*@txamt/10)/100 \ + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 else #index = cabs(tmp^2) + .1*@dep2 + texture + texture +(tx*@txamt/10)/100 \ + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 endif elseif @shade == "solid" if !(@cm == 1) #index = real(cos(tmp) - .1*@dep2 - .4) + za*@ta*t2 + texFin + texture + \ (tx*@txamt/10)/100 + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 else #index = real(cos(tmp) - .1*@dep2 - .4) + texture + \ (tx*@txamt/10)/100 + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 endif elseif @shade == "sharp" if !(@cm == 1) #index = real(acos(tmp^2)* .35 - .1*@dep2) + za*@ta*t2 + texFin + texture + \ (tx*@txamt/10)/100 + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 else #index = real(acos(tmp^2)* .35 - .1*@dep2) + texture + \ (tx*@txamt/10)/100 + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 endif elseif @shade == "wash" if !(@cm == 1) #index = real(atanh(tmp^2)* .6 - .1*@dep2 +.2) + za*@ta*t2 + texFin + texture + \ (tx*@txamt/10)/100 + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 else #index = real(atanh(tmp^2)* .6 - .1*@dep2 +.2) + texture + \ (tx*@txamt/10)/100 + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 endif elseif @shade == "silhouette" if !(@cm == 1) #index = real(acosh(tmp^2)- .1*@dep2) + za*@ta*t2 + texFin + texture + \ (tx*@txamt/10)/100 + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 else #index = real(acosh(tmp^2)- .1*@dep2) + texture + \ (tx*@txamt/10)/100 + t3*(tx*@txamt/10)/100 + rnn*@rr*(tx*@txamt/10)/100 endif endif endif else #solid = true endif default: title = "Doodads II" param ver caption = "Version" default = 2.38 visible = false endparam param trp caption = "More Trap Parameters" hint = "Additional parameters less frequently used." default = true endparam param txp caption = "More Texture Parameters" hint = "Additional parameters less frequently used." default = true endparam param m caption = " Trap Mode" enum = "1" "2" "3" "4" "5" "6" "7" "8" \ "9" "A" "B" "C" "D" "E" "F" "G" \ "H" "I" "J" "K" "L" "M" "N" "O" \ "P" "Q" "R" "S" "T" "U" default = 0 endparam param mr caption = "Flavor" enum = "A" "B" "C" "D" "E" "F" "G" \ "H" "I" "J" "K" "L" "M" default = 0 endparam param mrf caption = "Apply ABS to Flavor" default = false visible = @mr < 5 && @trp == true endparam param tad caption = "Trap Addend" default = 0.0 visible = @trp endparam param fm caption = "Flavor Multiplier" default = (1,1) visible = @trp endparam param cm caption = "Coloring Mode" enum = "Min Distance" "Triangles Only" "Iteration" "Modulated Iter" \ "Magnitude" "Real" "Imaginary" "Angle" \ "'PreTex'" "Patterns+Triangles" default = 0 endparam float param mc caption = "Mod. i Modulus" hint = "The modulus value for Modulated \ Iter coloring." default = 8 visible = @cm == 3 endparam func colorFn caption = "Coloring Mode Fn" default = ident() hint = "Changes the gradient mapping onto the elements" visible = @cm > 0 && @cm < 9 endfunc complex param tz1 caption = "Color Offset" default = (0,0) visible = @cm > 0 && @cm < 9 hint = "Changes the gradient mapping onto the elements" endparam complex param tz2 caption = "Color Strength" default = (1,0) hint = "Changes the gradient mapping onto the elements" visible = @cm > 0 && @cm < 9 endparam complex param tz3 caption = "Color Power" default = (1,0) hint = "Changes the gradient mapping onto the elements" visible = @cm > 0 && @cm < 9 endparam int param traptype caption = "Trap Type" enum = "Closest""First""Last""Average""Farthest""Sum""Sum Outline" default = 0 endparam int param mode_change caption = "Avg. Flavor" enum = "Normal""1""2""3""4""5""6""7""8""9""10""11""12""13""14""15""16""17" default = 1 hint = "Changes the gradient as applied to the 'Average' trap mode. \ some differences are subtle. You may need to change your \ gradient for best effect" visible = @traptype == 3 endparam bool param avgflv caption = "Change Avg. Flavor" default = false visible = @traptype == 3 endparam float param threshold caption = "Element Width" default = 1.0 visible = @traptype != "Closest" endparam complex param skip caption = "Skip Iters Last/First" default = (0, 1e20) hint = "The real value (top) shows the number of iters skipped starting from\ the outermost,the imag value (bottom) represents how many iters are \ shown from the outermost inwards. You can therefore show any number \ of consecutive iters at any point by adjusting the two \ values accordingly." visible = @ver == 1.5 endparam int param skip1 caption = "Start Iteration" default = 0 hint = "Indicates the number of the iteration where trapping \ will start. Can be used in conjunction with the next \ param to display any number of consecutive iters at any position." visible = @ver != 1.5 endparam int param skip2 caption = "Max Iterations" default = 100000 hint = "Indicates the maximum number of iterations that \ can be displayed, starting from the outermost. \ Can be used in conjuction with the last param to \ display any number of consecutive iters at any position." visible = @ver != 1.5 endparam bool param trapalliterations caption = "Limited Iterations" default = false hint = "Allows selectable blocks of iterations \ to be trapped and others skipped in a repeating pattern." endparam int param trapskip caption = "Iters to Trap [*skip]" default = 3 min = 1 hint = "This is the number of iterations to show for traps \ in a single block. When the 'Reverse Trapped/Skipped \ Iters' param is unchecked this becomes the number \ of iterations to hide." visible = @trapalliterations == true endparam int param trapiter caption = "Iters to Skip [*trap]" default = 3 min = 1 hint = "This is the number of iterations to hide for traps \ in a single block. When the 'Reverse Trapped/Skipped \ Iters' param is unchecked this becomes the number \ of iterations to show." visible = @trapalliterations == true endparam int param pattern caption = "Pattern Repeat" default = 0 min = 0 hint = "This determines the number of times the \ blocks of trapped/skipped iters repeat, after which all \ further iters are skipped. If the 'Reverse Shown/Hidden \ Iters' param is checked, all further iters are instead \ shown after this number of repeats. A value of 0 creates \ infinite repeats" visible = @trapalliterations == true endparam bool param reverse caption = "*[Reverse Trapped/Skipped Iters]" default = false visible = @trapalliterations == true endparam $ifdef VER40 heading text = "*Checking this box reverses the function of \ the 'Iters to Trap' and 'Iters to Skip' \ params, as indicated in brackets in \ those params above." visible = @trapalliterations == true endheading $endif bool param follow caption = "Pattern Follows Start Iter" default = true hint = "If checked, the blocks of trapped/skipped \ iters start from the chosen start iter. \ If unchecked, the blocks start from iter 0, \ whether or not it is skipped." visible = @trapalliterations == true endparam param tm caption = "Triangle Mode" enum = "Off" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" \ "10 + Morph" default = 1 endparam param ta caption = " Triangle Amount" default = 0.0 endparam param co caption = "Solid Color @ IC" hint = "Turns on Solid Color at the 'Iteration \ Cutoff'." default = false visible = !(@sk == 0) endparam param pwr caption = "`Trap Power'" default = 3.0 visible = @trp endparam param mul caption = " Trap Multiplier" default = 3.0 visible = @trp endparam param sb caption = "'Ripple' Control" hint = "A few Trap Modes are unaffected by this \ parameter. Useful Range is -50 to 50" default = 0.0 visible = @trp endparam param sa caption = "Expand+|-Contract" hint = "Useful Range is around -10 to 10" default = 0.0 visible = @trp endparam param shade caption = "Element Shading" enum = "normal""solid""sharp""wash""silhouette" default = 0 hint = "Changes the shading and edging of elements" visible = @trp endparam float param dep2 caption = "Contrast" default = 0.0 hint = "Changes the gradient mapping on the elements. \ But it also shifts the gradient--you'll have to \ adjust that when you change the param value." endparam float param edge caption = "Edge Definition" default = 0.0 hint = "Adds a progressive edge to the element borders \ as the value is increased. Positive increases mimic \ 'First' trapping mode and negative ones move towards \ 'Last. You will have to adjust the gradient" endparam heading caption = "Texture" endheading param ptt caption = "P&F Texture Mode" enum = " Off" "a Patterns 1" "b Patterns 2" "c Patterns 3" \ "d Patterns 4" "e Patterns #z" "f Patterns #pixel" \ "g Fuzz 1" "h Fuzz 2" "i Tri-Pattern 1" \ "j Tri-Pattern 2" "k Tri-Pattern 3" "l Tri-Pattern 4" \ "m Tri-Pattern 5" "n Tri-Pattern 6" "o Tri-Pattern 7" default = 0 endparam param pta caption = " P&F Amount" default = 0.2 visible = (@cm == 9 || !(@ptt == 0)) endparam param pct caption = "Change Tx Style" hint = "Another change in texture. Works with \ Triangles and Patterns" default = false visible = (@cm == 1 || @cm == 9 || (!(@ta == 0) && !(@tm == 0)) \ || ((@ptt > 0) && @pta > 0)) endparam heading caption = "Triangle Texture Parameters" visible = (@cm == 1 || (!(@ta == 0) && !(@tm == 0)) || (!(@pta == 0) && \ (@ptt > 8)) || ((@ptt == 0) && @cm == 9)) endheading param nsc caption = " Triangle Scale" hint = "If 'Use Real Scale' is enabled, the \ real value is applied to both the \ real and imaginary scales. Values from \ .01 to 100" default = (1,1) visible = (@cm == 1 || (!(@ta == 0) && !(@tm == 0)) \ || (!(@pta == 0) && (@ptt > 8)) || ((@ptt == 0) && @cm == 9)) endparam param ur caption = "Use 'Real' Scale" default = false visible = !(real(@nsc) == imag(@nsc)) \ && (@cm == 1 || (!(@ta == 0) && !(@tm == 0)) \ || (!(@pta == 0) && (@ptt > 8)) || ((@ptt == 0) && @cm == 9)) endparam param v2 caption = " Triangle Contrast" default = 1.0 visible = (@cm == 1 || (!(@ta == 0) && !(@tm == 0)) \ || (!(@pta == 0) && (@ptt > 8)) || ((@ptt == 0) && @cm == 9)) endparam param tb caption = " Triangle Weight" hint = "Changes the way the triangles are drawn. \ 4 bit binary weighting." default = 15 visible = @txp && (@cm == 1 || (!(@ta == 0) && !(@tm == 0)) \ || (!(@pta == 0) && (@ptt > 8)) || ((@ptt == 0) && @cm == 9)) endparam param f caption = " Triangle 'Offset'" hint = "Use small increments/decrements for best results." default = 1.05 visible = @txp && (@cm == 1 || (!(@ta == 0) && !(@tm == 0)) \ || (!(@pta == 0) && (@ptt > 8)) || ((@ptt == 0) && @cm == 9)) endparam param step caption = " Triangle Steps" default = 20 visible = @txp && (@cm == 1 || (!(@ta == 0) && !(@tm == 0)) \ || (!(@pta == 0) && (@ptt > 8)) || ((@ptt == 0) && @cm == 9)) endparam param r caption = "Randomness" default = 0.0 hint = "Only used for triangle modes." visible = @txp && (@cm == 1 || (!(@ta == 0) && !(@tm == 0)) \ || (!(@pta == 0) && (@ptt > 8)) || ((@ptt == 0) && @cm == 9)) endparam heading visible = (@cm == 1 || (!(@ta == 0) && !(@tm == 0))) \ && (!(@cm == 9) && @ptt == 0) endheading heading caption = "Patterns & Fuzz Texture Parameters" visible = !(@cm == 1) && (@cm == 9 || (!(@ptt == 0) && !(@pta == 0))) endheading param pto caption = " P&F Offset" hint = "Changes the appearance of the texture. \ When 'Change Tx Style' is enabled, 0,0 \ here produces circular Patterns." default = (-1,.75) visible = !(@cm == 1) && (@cm == 9 || (!(@ptt == 0) && !(@pta == 0))) endparam param psc caption = "P&F Scale" hint = "Larger values decrease the scale." default = 5.0 visible = !(@cm == 1) && (@cm == 9 || (!(@ptt == 0) && !(@pta == 0))) endparam param ptd caption = " P&F Density" hint = "Works similarly to 'Color Density', but is \ applied only to textures." default = 5.0 visible = !(@cm == 1) && (@cm == 9 || (!(@ptt == 0) && !(@pta == 0))) endparam param ptm caption = " P&F Modifier" hint = "Try values of 0.1 to 5" default = 1.0 visible = @txp && !(@cm == 1) && (@cm == 9 \ || (!(@ptt == 0) && !(@pta == 0))) endparam param pff caption = " P&F Fuzz Factor" hint = "Values above 1 give a less well-defined \ edge to Patterns." default = 1.0 visible = !(@cm == 1) && (@cm == 9 || (!(@ptt == 0) && !(@pta == 0))) endparam heading visible = !(@cm == 1) && (@cm == 9 || (!(@ptt == 0) && !(@pta == 0))) endheading param tp caption = "Texture Power" default = 1.0 visible = (@cm == 1 || @cm == 9 || (!(@ta == 0) && !(@tm == 0)) \ || ((@ptt > 0) && @pta > 0)) endparam param sk caption = "Iteration Cutoff" hint = "No texture is drawn after positive integer \ values, or before negative integer values. \ Any Decimal portion 'blends' in iteration \ coloring." default = 0.0 visible = (@cm == 1 || @cm == 9 || (!(@ta == 0) && !(@tm == 0)) \ || ((@ptt > 0) && @pta > 0)) endparam ;********************************************************** heading caption = "New Shaping Parameters" endheading bool param newStuff caption = "New Shaping Parameters" default = true endparam bool param type caption = "Accent" default = false hint = "Changes the shape of the elements" visible = @newStuff endparam int param ztype caption = "Mix Species" enum = "Normal""Modulus(z)""Atan2(z)""Real(z)""Imag(z)" default = 0 visible = @newStuff endparam func ztypeFn caption = "Mix Function 1" default = ident() hint = "Changes the shape of the elements" visible = @newStuff endfunc func ztypeFn2 caption = "Mix Function 2" default = ident() hint = "Changes the shape of the elements" visible = @newStuff endfunc complex param zamt1 caption = "Mix Offset" default = (0,0) visible = @newStuff endparam complex param zamt2 caption = "Mix Strength" default = (1,0) visible = @newStuff endparam complex param zamt3 caption = "Mix Power" default = (1,0) visible = @newStuff endparam int param varType caption = "X/Y Species" enum = "Normal""Modulus""Atan2""Real""Imag" default = 0 visible = @newStuff endparam int param opxy caption = "X/Y Operator" enum = "X+Y""X-Y""Y-X" default = 0 hint = "Changes the way X and Y combine to form Z" visible = @varType != "Modulus" && @newStuff endparam func varFn caption = "X/Y Function" default = ident() visible = @newStuff endfunc complex param xb1 caption = "X/Y Offset" default = (0,0) visible = @newStuff endparam complex param xb2 caption = "X/Y Strength" default = (1,0) visible = @newStuff endparam complex param xb3 caption = "X/Y Power" default = (1,0) visible = @newStuff endparam func nufnx caption = "X Function" default = ident () visible = @newStuff endfunc func nufny caption = "Y Function" default = ident () visible = @newStuff endfunc bool param nuflav2 caption = "Change Y Fn Flavor" default = false visible = @newStuff endparam complex param px1 caption = "X Offset" default = (0,0) visible = @newStuff endparam complex param py1 caption = "Y Offset" default = (0,0) visible = @newStuff endparam complex param px2 caption = "X Strength" default = (1,0) visible = @newStuff endparam complex param py2 caption = "Y Strength" default = (1,0) visible = @newStuff endparam complex param px3 caption = "X Power" default = (1,0) visible = @newStuff endparam complex param py3 caption = "Y Power" default = (1,0) visible = @newStuff endparam int param opadd caption = "Extra X/Y" enum = "None""+(X+Y)""-(X+Y)""+(X-Y)""-(X-Y)""+(Y-X)""-(Y-X)""+(X*Y)"\ "-(X*Y)""+(X/Y)""-(X/Y)""+(Y/X)""-(Y/X)""+(X^Y)""-(X^Y)""+(Y^X)""-(Y^X)" default = 0 hint = "These an extra set of X and Y values to the definition of Z whose \ strength and associated functions can be varied according to the \ parameters below" visible = @newStuff endparam func nufuncxtx caption = "Extra X Fn" default = sin() hint = "Varies the function associated with the X variable in the \ extra X/Y set." visible = @opadd > 0 && @newStuff endfunc func nufuncxty caption = "Extra Y Fn" default = sin() hint = "Varies the function associated with the Y variable in the \ extra X/Y set." visible = @opadd > 0 && @newStuff endfunc bool param nuflav caption = "Change Extra Y Fn Flavor" default = false visible = @opadd > 0 && @newStuff endparam complex param xtra1x caption = "Extra X Offset" default = (0,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra1y caption = "Extra Y Offset" default = (0,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra2x caption = "Extra X Strength" default = (1,0) hint = "Varies the strength in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra2y caption = "Extra Y Strength" default = (1,0) hint = "Varies the strength in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra3x caption = "Extra X Power" default = (1,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra3y caption = "Extra Y Power" default = (1,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam heading caption = "Masking" endheading param msk caption = " Mask Threshold" default = 0.0 endparam param im caption = "Reverse Mask" hint = "Reverses the areas drawn in the Solid Color \ with those areas drawn normally." default = false visible = !(@msk == 0) endparam heading caption = "Functions" endheading func fn4 caption = "Initial function" default = ident() endfunc func fn1 caption = "Real function" default = ident() endfunc func fn2 caption = "Imag function" default = ident() endfunc func fn3 caption = "Overall function" default = ident() endfunc func fn9 caption = "First Trap function" default = ident() visible = @trp endfunc func fn8 caption = "Final Trap function" default = ident() endfunc func fn5 caption = "Texture function 1" default = ident() visible = (@cm == 1 || @cm == 9 || (!(@ta == 0) && !(@tm == 0)) \ || ((@ptt > 0) && @pta > 0)) endfunc func fn6 caption = "Texture function 2" default = ident() visible = (@cm == 1 || @cm == 9 || (!(@ta == 0) && !(@tm == 0)) \ || ((@ptt > 0) && @pta > 0)) endfunc func fn7 caption = "Texture function 3" default = ident() visible = (@cm == 1 || @cm == 9 || (!(@ta == 0) && !(@tm == 0)) \ || ((@ptt > 0) && @pta > 0)) endfunc ; Morph Parameters-------------------------------------------------- heading caption = "Morph Parameters" visible = (@change == 0 && @exp1 == (1,0) && @exp2 == (1,0) \ && @exp3 == (1,0) && @tw == (0,0) && @tw2 == (0,0) && @tw3 == \ (0,0) && @tha2 == false) endheading heading caption = "Morph Parameters [active]" visible = (@change != 0 || @exp1 != (1,0) || @exp2 != (1,0) || \ @exp3 != (1,0) || @tw != (0,0) || @tw2 != (0,0) || @tw3 != (0,0) \ || @tha2 == true) endheading param showm caption = "Morph Parameters" hint = "Additional shaping parameters and functions." default = true endparam param tha2 caption = "Morph -> Morph II" default = true visible = @showm endparam param change caption = "Morph" enum = "1""2""3""4""5""6""7""8""9""10""11" default = 0 visible = @showm endparam param mmode caption = "Z1 Mode" enum = "z+|z|""z-|z|""|z|-z" default = 0 hint = "Defines relationship of z1 to z in 1st z block" visible = @showm && @tha2 endparam param zchange1 caption = "Z1 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z1 variable " visible = @showm && @tha2 endparam param mmode2 caption = "Z2 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z2 to z in 2nd z block" visible = @showm && @tha2 && @change > 0 endparam param zchange2 caption = "Z2 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z2 variable " visible = @showm && @tha2 && @change > 0 endparam param mmode3 caption = "Z3 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z3 to z in 3rd z block" visible = @showm && @tha2 && @change > 5 endparam param zchange3 caption = "Z3 type" enum = "|z|""atan2(z)""real(z)""imag(z)" hint = "Determines the character of z3 variable " default = 0 visible = @showm && @tha2 && @change > 5 endparam complex param exp1 caption = "Bias 1" default = (1,0) visible = @showm endparam complex param exp3 caption = "Bias 2" default = (1,0) visible = @showm && @change > 0 endparam complex param exp2 caption = "Bias 3" default = (1,0) visible = @showm && @change > 5 endparam complex param exp4 caption = "Bias Z1" default = (1,0) visible = @tha2 && @showm endparam complex param exp5 caption = "Bias Z2" default = (1,0) visible = @tha2 && @showm && @change > 0 endparam complex param exp6 caption = "Bias Z3" default = (1,0) visible = @tha2 && @showm && @change > 5 endparam complex param tw caption = "Twist 1" default = (0,0) visible = @showm endparam complex param tw2 caption = "Twist 2" default = (0,0) visible = @showm && @change > 0 endparam complex param tw3 caption = "Twist 3" default = (0,0) visible = @showm && @change > 5 endparam complex param tw4 caption = "Twist Z1" default = (0,0) visible = @tha2 && @showm endparam complex param tw5 caption = "Twist Z2" default = (0,0) visible = @tha2 && @showm && @change > 0 endparam complex param tw6 caption = "Twist Z3" default = (0,0) visible = @tha2 && @showm && @change > 5 endparam param op caption = "Operator" enum = "+""-""*""/""^" default = 0 visible = @showm && @change > 5 endparam func nufunc caption = "Morph function 1" default = ident() visible = @showm endfunc func nufunc2 caption = "Morph function 2" default = ident () visible = @showm && @change > 0 endfunc func nufunc3 caption = "Morph function 3" default = ident () visible = @showm && @change > 5 endfunc func nufunc4 caption = "Morph function Z1" default = ident () visible = @tha2 && @showm endfunc func nufunc5 caption = "Morph function Z2" default = zero () visible = @tha2 && @showm && @change > 0 endfunc func nufunc6 caption = "Morph function Z3" default = zero () visible = @tha2 && @showm && @change > 5 endfunc heading caption = "Progressive Morph Params" visible = ((@incExp1r == false || (@incExp1r == true && @exp1rDegree == 0))&&\ (@incExp1i == false || (@incExp1i == true && @exp1iDegree == 0)) &&\ (@incExp2r == false || (@incExp2r == true && @exp2rDegree == 0)) &&\ (@incExp2i == false || (@incExp2i == true && @exp2iDegree == 0)) &&\ (@incExp3r == false || (@incExp3r == true && @exp3rDegree == 0)) &&\ (@incExp3i == false || (@incExp3i == true && @exp3iDegree == 0)) &&\ (@incExp4r == false || (@incExp4r == true && @exp4rDegree == 0)) &&\ (@incExp4i == false || (@incExp4i == true && @exp4iDegree == 0)) &&\ (@incExp5r == false || (@incExp5r == true && @exp5rDegree == 0)) &&\ (@incExp5i == false || (@incExp5i == true && @exp5iDegree == 0)) &&\ (@incExp6r == false || (@incExp6r == true && @exp6rDegree == 0)) &&\ (@incExp6i == false || (@incExp6i == true && @exp6iDegree == 0)) &&\ (@incTwr == false || (@incTwr == true && @twistrDegree == 0)) &&\ (@incTwi == false || (@incTwi == true && @twistiDegree == 0)) &&\ (@incTw2r == false || (@incTw2r == true && @twist2rDegree == 0))&&\ (@incTw2i == false || (@incTw2i == true && @twist2iDegree == 0)) &&\ (@incTw3r == false || (@incTw3r == true && @twist3rDegree == 0)) &&\ (@incTw3i == false || (@incTw3i == true && @twist3iDegree == 0)) &&\ (@incTw4r == false || (@incTw4r == true && @twist4rDegree == 0)) &&\ (@incTw4i == false || (@incTw4i == true && @twist4iDegree == 0)) &&\ (@incTw5r == false || (@incTw5r == true && @twist5rDegree == 0))&&\ (@incTw5i == false || (@incTw5i == true && @twist5iDegree == 0)) &&\ (@incTw6r == false || (@incTw6r == true && @twist6rDegree == 0)) &&\ (@incTw6i == false || (@incTw6i == true && @twist6iDegree == 0)))\ && @showm endheading heading caption = "Progressive Morph Params [active]" visible = ((@incExp1r == true && @exp1rDegree != 0) || (@incExp1i == true &&\ @exp1iDegree != 0) || (@incExp2r == true && @exp2rDegree != 0) || \ (@incExp2i == true && @exp2iDegree != 0) || (@incExp3r == true && \ @exp3rDegree != 0) || (@incExp3i == true && @exp3iDegree != 0) || \ (@incExp4r == true && @exp4rDegree != 0) || (@incExp4i == true && \ @exp4iDegree != 0) || (@incExp5r == true && @exp5rDegree != 0) || \ (@incExp5i == true && @exp5iDegree != 0) || (@incExp6r == true && \ @exp6rDegree != 0) || (@incExp6i == true && @exp6iDegree != 0) || \ (@incTwr == true && @twistrDegree != 0) || (@incTwi == true && \ @twistiDegree != 0) || (@incTw2r == true && @twist2rDegree != 0) ||\ (@incTw2i == true && @twist2iDegree != 0) || (@incTw3r == true && \ @twist3rDegree != 0) || (@incTw3i == true && @twist3iDegree != 0) ||\ (@incTw4r == true && @twist4rDegree != 0) || (@incTw4i == true && \ @twist4iDegree != 0) || (@incTw5r == true && @twist5rDegree != 0) ||\ (@incTw5i == true && @twist5iDegree != 0) || (@incTw6r == true && \ @twist6rDegree != 0) || (@incTw6i == true && @twist6iDegree != 0)) &&\ @showm endheading bool param progress caption = "Progressive Parameters" default = false visible = @showm endparam int param linear caption = "Progression Type" enum = "Linear""Non-Linear 1""Non-Linear 2""Non-Linear 3" default = 0 hint = "Determines how the param changes with each iteration, \ whether by the same amount each time, or by a non-linear \ amount" visible = @progress && @showm endparam float param speed caption = "Non-Linear Amount" default = 1 visible = @progress && @showm && @linear != 0 endparam bool param incExp1r caption = "> Bias 1 (re)" default = false visible = @progress && @showm endparam float param exp1rDegree caption = "Increment by" default = 0 visible = @progress && @incExp1r && @showm endparam bool param incExp1i caption = "> Bias 1 (im)" default = false visible = @progress && @showm endparam float param exp1iDegree caption = "Increment by" default = 0 visible = @progress && @incExp1i && @showm endparam bool param incExp3r caption = "> Bias 2 (re)" default = false visible = @progress && @change > 0 && @showm endparam float param exp3rDegree caption = "Increment by" default = 0 visible = @progress && @incExp3r && @showm endparam bool param incExp3i caption = "> Bias 2 (im)" default = false visible = @progress && @change > 0 && @showm endparam float param exp3iDegree caption = "Increment by" default = 0 visible = @progress && @incExp3i && @showm endparam bool param incExp2r caption = "> Bias 3 (re)" default = false visible = @progress && @change > 5 && @showm endparam float param exp2rDegree caption = "Increment by" default = 0 visible = @progress && @incExp2r && @showm endparam bool param incExp2i caption = "> Bias 3 (im)" default = false visible = @progress && @change > 5 && @showm endparam float param exp2iDegree caption = "Increment by" default = 0 visible = @progress && @incExp2i && @showm endparam bool param incExp4r caption = "> Bias Z1 (re)" default = false visible = @progress && @tha2 && @showm endparam float param exp4rDegree caption = "Increment by" default = 0 visible = @progress && @incExp4r && @showm endparam bool param incExp4i caption = "> Bias Z1 (im)" default = false visible = @progress && @tha2 && @showm endparam float param exp4iDegree caption = "Increment by" default = 0 visible = @progress && @incExp4i && @showm endparam bool param incExp5r caption = "> Bias Z2 (re)" default = false visible = @progress && @tha2 && @change > 0 && @showm endparam float param exp5rDegree caption = "Increment by" default = 0 visible = @progress && @incExp5r && @showm endparam bool param incExp5i caption = "> Bias Z2 (im)" default = false visible = @progress && @tha2 && @change > 0 && @showm endparam float param exp5iDegree caption = "Increment by" default = 0 visible = @progress && @incExp5i && @showm endparam bool param incExp6r caption = "> Bias Z3 (re)" default = false visible = @progress && @tha2 && @change > 5 && @showm endparam float param exp6rDegree caption = "Increment by" default = 0 visible = @progress && @incExp6r && @showm endparam bool param incExp6i caption = "> Bias Z3 (im)" default = false visible = @progress && @tha2 && @change > 5 && @showm endparam float param exp6iDegree caption = "Increment by" default = 0 visible = @progress && @incExp6i && @showm endparam bool param incTwr caption = "> Twist 1 (re)" default = false visible = @progress && @showm endparam float param twistrDegree caption = "Increment by" default = 0 visible = @progress && @incTwr && @showm endparam bool param incTwi caption = "> Twist 1 (im)" default = false visible = @progress && @showm endparam float param twistiDegree caption = "Increment by" default = 0 visible = @progress && @incTwi && @showm endparam bool param incTw2r caption = "> Twist 2 (re)" default = false visible = @progress && @change > 0 && @showm endparam float param twist2rDegree caption = "Increment by" default = 0 visible = @progress && @incTw2r && @showm endparam bool param incTw2i caption = "> Twist 2 (im)" default = false visible = @progress && @change > 0 && @showm endparam float param twist2iDegree caption = "Increment by" default = 0 visible = @progress && @incTw2i && @showm endparam bool param incTw3r caption = "> Twist 3 (re)" default = false visible = @progress && @change > 5 && @showm endparam float param twist3rDegree caption = "Increment by" default = 0 visible = @progress && @incTw3r && @showm endparam bool param incTw3i caption = "> Twist 3 (im)" default = false visible = @progress && @change > 5 && @showm endparam float param twist3iDegree caption = "Increment by" default = 0 visible = @progress && @incTw3i && @showm endparam bool param incTw4r caption = "> Twist Z1 (re)" default = false visible = @progress && @tha2 && @showm endparam float param twist4rDegree caption = "Increment by" default = 0 visible = @progress && @incTw4r && @showm endparam bool param incTw4i caption = "> Twist Z1 (im)" default = false visible = @progress && @tha2 && @showm endparam float param twist4iDegree caption = "Increment by" default = 0 visible = @progress && @incTw4i && @showm endparam bool param incTw5r caption = "> Twist Z2 (re)" default = false visible = @progress && @tha2 && @change > 0 && @showm endparam float param twist5rDegree caption = "Increment by" default = 0 visible = @progress && @incTw5r && @showm endparam bool param incTw5i caption = "> Twist Z2 (im)" default = false visible = @progress && @tha2 && @change > 0 && @showm endparam float param twist5iDegree caption = "Increment by" default = 0 visible = @progress && @incTw5i && @showm endparam bool param incTw6r caption = "> Twist Z3 (re)" default = false visible = @progress && @tha2 && @change > 5 && @showm endparam float param twist6rDegree caption = "Increment by" default = 0 visible = @progress && @incTw6r && @showm endparam bool param incTw6i caption = "> Twist Z3 (im)" default = false visible = @progress && @tha2 && @change > 5 && @showm endparam float param twist6iDegree caption = "Increment by" default = 0 visible = @progress && @incTw6i && @showm endparam heading caption = "Extra Textures" visible = (@rnd == 0 && @fbmtxt == 0 && @decamt == 0 && @tpp == 0 && @gnarl_amt == 0) endheading heading caption = "Extra Textures [active]" visible = (@rnd != 0 || @fbmtxt != 0 || @decamt != 0 || @tpp != 0 || @gnarl_amt != 0) endheading param advt caption = "Extra Texture Params" default = true endparam float param txamt caption = "Overall Tx Percent" default = 100.0 hint = "Controls the amount of \ Random, fBm, Decimal, Popgnarl and Additional \ texture applied cumulatively." visible = @advt endparam float param rnd caption = "Random Tx Amount" default = 0.0 hint = "Adds Random texture" visible = @advt endparam heading caption = "fBm" visible = @advt && @fbmtxt == 0 endheading heading caption = "fBm [active]" visible = @advt && @fbmtxt != 0 endheading param advfbm caption = "fBm Texturing" default = true visible = @advt endparam float param fbmtxt caption = "fBm Tx Amount" default = 0.0 visible = @advt && @advfbm endparam param fbminit caption = "fBm Initialization" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advfbm endparam param ztyp4 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'fBm Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam func fntx8 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'fBm Initialization'" visible = @advt && @advfbm endfunc func fntx9 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'fBm Initialization'" visible = @advt && @advfbm endfunc func fbmrfn1 caption = "fBm Function 1" default = ident() hint = "Try changing this to achieve different fBm \ 'cloud' distribution and look" visible = @advt && @advfbm endfunc func fbmifn1 caption = "fBm Function 2" default = ident() hint = "Try changing this to achieve different fBm \ 'cloud' distribution and look" visible = @advt && @advfbm endfunc func fbmrfn2 caption = "Pattern Function 1" default = floor() hint = "Changing this often radically alters the look of the \ texture. With many functions--if they look 'grainy'--\ you will need to make the value of the 'Frequency' (real) \ param much smaller--on the order of .0000001. Experiment!" visible = @advt && @advfbm endfunc func fbmifn2 caption = "Pattern Function 2" default = floor() hint = "Changing this often radically alters the look of the \ texture. With many functions--if they look 'grainy'--\ you will need to make the value of the 'Frequency' (real) \ param much smaller--on the order of .0000001. Experiment!" visible = @advt && @advfbm endfunc float param a caption = "Distribution 1" default = 1 visible = @advt && @advfbm endparam float param b caption = "Distribution 2" default = 1 visible = @advt && @advfbm endparam float param c caption = "Distribution 3" default = 1 visible = @advt && @advfbm endparam float param d caption = "Distribution 4" default = 1 visible = @advt && @advfbm endparam complex param txia4 caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param txib4 caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param txic4 caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param exad8 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'fBm Initialization'" visible = @advt && @advfbm endparam complex param exad9 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'fBm Initialization'" visible = @advt && @advfbm && !(@fbminit == 0 ||@fbminit == 5 || @fbminit == 6 ||\ @fbminit == 21) endparam float param fbmscale caption = "fBm Scale" default = 1.0 visible = @advt && @advfbm endparam complex param fbmoffset caption = "fBm Offset" default = (0,0) visible = @advt && @advfbm endparam float param fbmangle caption = "fBm Rotation" default = 0.0 visible = @advt && @advfbm endparam float param fbmstep caption = "fBm Scale Step" default = 0.5 visible = @advt && @advfbm endparam float param fbmastep caption = "fBm Rotation Step" default = 37.0 visible = @advt && @advfbm endparam param fbmoct caption = "fBm Octaves" default = 7 min = 1 visible = @advt && @advfbm endparam float param fbmpower caption = "fBm Exponent" default = 2.0 visible = @advt && @advfbm endparam float param fbm_limit caption = "fBm Limit" default = 0.0 visible = @advt && @advfbm endparam bool param fbm_sgn caption = "Soften Texture" default = true visible = @advt && @advfbm endparam heading caption = "Decimal" visible = @advt && @decamt == 0 endheading heading caption = "Decimal [active]" visible = @advt && @decamt != 0 endheading param advd caption = "Decimal Texturing" default = false visible = @advt endparam float param decamt caption = "Decimal Tx Amount" default = 0.0 visible = @advt && @advd endparam param dec_init caption = "Decimal Initialisation" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advd endparam param ztyp2 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Decimal Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam func fntx4 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Decimal Initialization'" visible = @advt && @advd endfunc func fntx5 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Decimal Initialization'" visible = @advt && @advd endfunc param dec_type caption = "Decimal Type" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advd endparam func fndec caption = "Type Function" default = atanh () hint = "Active when 'Decimal Type' = 'All Functions'" visible = @advt && @advd && @dec_type == 4 endfunc complex param txia2 caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam complex param txib2 caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam complex param txic2 caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam float param dec_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Decimal Type'" visible = @advt && @advd endparam float param dec_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present) defined in 'Decimal Type'" visible = @advt && @advd && @dec_type > 4 endparam float param dectxt caption = "Decimal Depth" default = 1.0 hint = "Changes the amount and to some extent \ the pattern of the texture." visible = @advt && @advd endparam float param dec_limit caption = "Decimal Limit" default = 2.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advd endparam complex param exad4 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 1st (or only) variable present defined in \ 'Decimal Initialization'" visible = @advt && @advd endparam complex param exad5 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 2nd variable (when present) defined in \ 'Decimal Initialization'" visible = @advt && @advd && !(@dec_init == 0 ||@dec_init == 5 || @dec_init == 6) endparam float param dec_size caption = "Decimal Size" default = 1.0 visible = @advt && @advd endparam param dec_sgn caption = "Apply Decimal Sign?" default = true visible = @advt && @advd endparam heading caption = "Popgnarl" visible = @advt && @gnarl_amt == 0 endheading heading caption = "Popgnarl [active]" visible = @advt && @gnarl_amt != 0 endheading param advpg caption = "Popgnarl Texturing" default = false visible = @advt endparam float param gnarl_amt caption = "Popgnarl Amount" default = 0.0 min = 0.0 visible = @advt && @advpg endparam param gnarl_init caption = "Popgnarl Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advpg endparam param ztyp3 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Popgnarl Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam func fntx6 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg endfunc func fntx7 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg endfunc complex param txia3 caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param txib3 caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param txic3 caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param exad6 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 1st (or only) variable defined in 'Popgnarl Initilaization'" visible = @advt && @advpg endparam complex param exad7 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 2nd variable (when present) defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && !(@gnarl_init == 0 || @gnarl_init == 5 || \ @gnarl_init == 6 || @gnarl_init == 21) endparam param gnarl_type caption = "Popgnarl Mode" enum = "real" "imag" "real+imag" "real*imag" "real-imag" \ "real/imag" "imag/real" "real^imag" "imag^real" \ "1/real" "1/imag" "angle" "magnitude" "arith. mean" \ "geom. mean" visible = @advt && @advpg endparam func fng caption = "Mode Function" default = abs() hint = "Acts on the variables in 'Popgnarl Mode'" visible = @advt && @advpg && @gnarl_type < 11 endfunc param gnarl_scaling caption = "Popgnarl Scaling" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advpg endparam func fngnarl caption = "Scaling Function" default = atanh () visible = @advt && @advpg && @gnarl_scaling == 4 endfunc float param gnarl_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Popgnarl Scaling'" visible = @advt && @advpg endparam float param gnarl_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present)defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @gnarl_scaling > 4 endparam param gnarl_form caption = "Popgnarl Formula" enum = "gnarl" "popcorn" "popsicle" "tannous" "narlog" visible = @advt && @advpg endparam float param gnarl_limit caption = "Popgnarl Limit" default = 1.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advpg endparam float param gnarl_size caption = "Popgnarl Size" default = 1.0 visible = @advt && @advpg endparam int param gnarl_octaves caption = "Popgnarl Octaves" default = 5 min = 1 visible = @advt && @advpg endparam heading caption = "Geometrix" visible = @advt && @trtxt == 0 endheading heading caption = "Geometrix [active]" visible = @advt && @trtxt != 0 endheading param advtr caption = "Geometrix Texturing" default = true visible = @advt endparam float param trtxt caption = "Geometrix Tx Amt" default = 0.0 visible = @advt && @advtr endparam param trinit caption = "Geometrix Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advtr endparam param ztyp5 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Geometrix Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam func fntx10 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr endfunc func fntx11 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr endfunc func georfn caption = "Real Function" default = floor() visible = @advt && @advtr endfunc func geoifn caption = "Imag Function" default = floor() visible = @advt && @advtr endfunc func georfn2 caption = "Real Function 2" default = floor() visible = @advt && @advtr endfunc func geoifn2 caption = "Imag Function 2" default = floor() visible = @advt && @advtr endfunc complex param trxia caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param trxib caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param trxic caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param exad10 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'Geometrix Initialization'" visible = @advt && @advtr endparam complex param exad11 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'Geometrix Initialization'" visible = @advt && @advtr && !(@trinit == 0 ||@trinit == 5 || @trinit == 6 ||\ @trinit == 21) endparam float param exp caption = "Contrast" default = 1 visible = @advt && @advtr hint = "Higher values intensify the contrast between texture sections. If \ you have burned-out areas of texture try lowering this value" endparam float param scc caption = "Density" default = 1.0 hint = "Higher values create finer detail in the texture" visible = @advt && @advtr endparam float param trp1 caption = "Scale" default = 1 visible = @advt && @advtr hint = "Densest texture is at '1'. Try other values and increase the \ 'Density' value to achieve different texture patterns" endparam float param freq caption = "Definition 1" default = 10 visible = @advt && @advtr hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition and/or complexity" endparam float param trp2 caption = "Definition 2" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr endparam float param trp3 caption = "Definition 3" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr endparam float param shad1 caption = "Shading 1" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad2 caption = "Shading 2" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad3 caption = "Shading 3" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad4 caption = "Shading 4" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam func fnzr caption = "Z function 1" default = ident() visible = @advt && @advtr endfunc func fnzi caption = "Z function 2" default = ident() visible = @advt && @advtr endfunc func fn1tx caption = "Real function" default = sqrt() visible = @advt && @advtr endfunc func fn2tx caption = "Imag function" default = ident() visible = @advt && @advtr endfunc func fn3tx caption = "Overall function" default = asin() visible = @advt && @advtr endfunc float param geo_limit caption = "Geometrix Limit" default = 0.0 hint = "Low values limit texture contrast. Zero is 'off'" visible = @advt && @advtr endparam bool param geo_sgn caption = "Soften Texture" default = false visible = @advt && @advtr endparam heading caption = "Additional Texture" visible = @advt && @tpp == 0 endheading heading caption = "Additional Texture [active]" visible = @advt && @tpp != 0 endheading param advatx caption = "Additional Texturing" default = false visible = @advt endparam float param tpp caption = "Add'l Tx Amount" hint = "'Blends' in texture" default = 0.0 visible = @advt && @advatx endparam param ttt caption = "Add'l Tx Initialization" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advatx endparam param ztyp caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Add'l Tx Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advatx && (@ttt < 5 || @ttt > 14 && @ttt < 21) endparam func fntx1 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Add'l Tx Initialization'" visible = @advt && @advatx endfunc func fntx2 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in\ 'Add'l Tx Initialization'" visible = @advt && @advatx endfunc func fntx3 caption = "Add'l Tx Function" default = trunc() visible = @advt && @advatx endfunc complex param txia1 caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advatx && (@ttt < 5 || @ttt > 14 && @ttt < 21) endparam complex param txib1 caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advatx && (@ttt < 5 || @ttt > 14 && @ttt < 21) endparam complex param txic1 caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advatx && (@ttt < 5 || @ttt > 14 && @ttt < 21) endparam complex param exad1 caption = "Frequency 1" default = (1.0,0.0) hint = "Determines the frequency of the pattern by acting on \ the 1st (or only) variable defined by 'Add'l Tx Initialization'" visible = @advt && @advatx endparam complex param exad2 caption = "Frequency 2" default = (1.0,0.0) hint = "Determines the frequency of the pattern by acting on \ the 2nd variable (when present) defined by 'Add'l Tx Initialization'" visible = @advt && @advatx && !(@ttt == 0 ||@ttt == 5 || @ttt == 6) endparam float param tv caption = "Scale 1" hint = "This and the next parameter work together \ to determine the scale of the texture" default = 10.0 visible = @advt && @advatx endparam float param ts caption = "Scale 2" default = 2.0 visible = @advt && @advatx endparam float param tcc caption = "Density" hint = "Works similarly to 'Color Density'. Positive \ numbers use division. Negative numbers use modulus, \ producing a slightly different effect." default = 5.0 visible = @advt && @advatx endparam float param rr caption = "Randomness" default = 0.0 visible = @advt && @advatx endparam bool param add_sgn caption = "Soften Texture" default = true visible = @advt && @advatx endparam } ****************************************************************** harlequinII_mt+tma { ; Mark Townsend, 22 Aug 1999 ; ; Based on the Paul Carlson orbit trap. ; ; Tweaked by Toby Marshall 12 Apr. 2008 ; ver 2.47 ; ; New in 2.2: new z types added to all the textures ; ("Trap z" and "Trap #z) so that the textures ; conform to the element shapes. See hint for ; "Choose z type" params. ; ; New in 2.3: added a "Geometrix" texture based ; on code by Dennis Magar. ; ; New in 2.31: optimized the Morph code and added ; a few enhancements to the fBm, Geometrix and ; Additional textures. ; ; New in 2.4: More Morph optimization. Added a section ; of "Shaping Parameters" that modify the real and ; imaginary variables and their product. Also added ; some params and a function to most coloring modes. ; ; New in 2.41: Added some bells and whistles to the fBm ; texture section. Check the hints... ; ; New in 2.42: Added trapping modes "First" and "Last" ; and a param: "Element Width" to control them. Also added ; a "Shading" param. Also rationalized the param order ; somewhat on the tab. ; ; New in 2.43: Added "Average", "Farthest" and "Sum" ; trapping modes, and "Edge Definition" parameter. ; Changed the param order a bit. ; ; New in 2.44: Added "limited iterations"; many thanks ; to Damien M. Jones for allowing me to use this code ; of his. ; ; New in 2.45: Added a pattern repeat param to the ; limited iter code, after Ron Barnett. ; ; New in 2.46: Added more limited iter code. ; ; New in 2.47: rationalized and standardized ; limited iter code. ; ; This coloring is a modification of Mark's original ; "Harlequin" coloring, and is not backwards-compatible ; with it. It retains his basic trapping code but ; adds a number of extra functions and parameters. ; ; Many thanks to Mark for allowing me to publish it. ; Thanks also to Michèle Dessureault, Damien M. Jones, ; Andreas Lober and Dennis Magar for allowing me to ; include their texture code. ; ; When "Morph II" is activated by default only ; "Morph function Z1" is active; you must set ; "Morph function Z2" & 3 to some function other than ; "zero" to activate them when they appear as the ; appropriate Morph choice is selected. ; ; When "Morph II" is active there is also the possibility ; of choosing the variable type for Z1-3 in any of the ; three positions where that secondary Z expression appears, ; via the "Z1(2,3)Type" parameters. ; init: int ra = 1322939 int rc = 7336919 int rm = 36282757 float x = 0 float y = 0 complex tz = (0,0) trap_z = 0 trap_point = 0 float trap_iter = 0.0 float temp = 0 float min_dist = 1e20 float texture = 0.0 p = (0.0,0.0) pfb = (0.0,0.0) float x = 0 float y = 0 float xx =0 float yy =0 float ddd = 0 float texture_rnd = 0.0 float texture_dec = 0.0 float texture_fbm = 0.0 float texture_gna = 0.0 float pd = 0.0 int i = 0 int it = 0 float aaa = 0 float t2 = 0 float tx = abs(@tp) float a2 = 0 complex tz = (0,0) float ct = abs(@tc*1000) float tmp = 0 float rn = real(#random) complex z2 = (0,0) complex z3 = (0,0) complex z4 = (0,0) complex trap2_z = (0,0) float texture_tr = 0.0 complex ptr = (0,0) float frfr = 0 float fifi = 0 float zzzz = 0 float r0r0 = 0 float i0i0 = 0 float r1r1 = 0 float i1i1 = 0 float azaz = 0 float bzbz = 0 float czcz = 0 float dzdz = 0 float zaza = 0 float avav = 1 float xbxb = 1 int iter = 0 complex z_values[#maxiter+1] complex z1p = (0,0) complex z1q = (0,0) complex qw = (0,0) complex er = (0,0) complex ty = (0,0) float za = 0 complex nuvar = (0,0) complex a = (0,0) bool trapped = false if @edges == 4 min_dist = 0 endif float dave = 0 float dsum = 0 float distance = 0 bool trapping = false float fiter = 0 float patnum = 0 loop: complex z1 = #z if @th2 == false qw = @nufunc(z1-@tw)^@exp3 er = @nufunc2((z1-@tw2)^@exp1) ty = @nufunc3((z1-@tw3)^@exp2) if @change == "1" z1 = @nufunc(z1-@tw)^@exp1 elseif @change == "2" z1 = qw+er elseif @change == "3" z1 = qw-er elseif @change == "4" z1 = qw*er elseif @change == "5" z1 = qw/er elseif @change == "6" z1 = qw^er elseif @change == "7" if @op == "+" z1 = qw+(er+ty) elseif @op == "-" z1 = qw+(er-ty) elseif @op == "*" z1 = qw+(er*ty) elseif @op == "/" z1 = qw+(er/ty) elseif @op == "^" z1 = qw+(er^ty) endif elseif @change == "8" if @op == "+" z1 = qw-(er+ty) elseif @op == "-" z1 = qw-(er-ty) elseif @op == "*" z1 = qw-(er*ty) elseif @op == "/" z1 = qw-(er/ty) elseif @op == "^" z1 = qw-(er^ty) endif elseif @change == "9" if @op == "+" z1 = qw*(er+ty) elseif @op == "-" z1 = qw*(er-ty) elseif @op == "*" z1 = qw*(er*ty) elseif @op == "/" z1 = qw*(er/ty) elseif @op == "^" z1 = qw*(er^ty) endif elseif @change == "10" if @op == "+" z1 = qw/(er+ty) elseif @op == "-" z1 = qw/(er-ty) elseif @op == "*" z1 = qw/(er*ty) elseif @op == "/" z1 = qw/(er/ty) elseif @op == "^" z1 = qw/(er^ty) endif elseif @change == "11" if @op == "+" z1 = qw^(er+ty) elseif @op == "-" z1 = qw^(er-ty) elseif @op == "*" z1 = qw^(er*ty) elseif @op == "/" z1 = qw^(er/ty) elseif @op == "^" z1 = qw^(er^ty) endif endif else if @zchange1 == "|z|" z2 = |z1| elseif @zchange1 == "atan2(z)" z2 = atan2(z1) elseif @zchange1 == "real(z)" z2 = real(z1) elseif @zchange1 == "imag(z)" z2 = imag(z1) endif if @zchange2 == "|z|" z3 = |z1| elseif @zchange2 == "atan2(z)" z3 = atan2(z1) elseif @zchange2 == "real(z)" z3 = real(z1) elseif @zchange2 == "imag(z)" z3 = imag(z1) endif if @zchange3 == "|z|" z4 = |z1| elseif @zchange3 == "atan2(z)" z4 = atan2(z1) elseif @zchange3 == "real(z)" z4 = real(z1) elseif @zchange3 == "imag(z)" z4 = imag(z1) endif aah = @nufunc((z1-@tw)+@nufunc4(z2-@tw4)^@exp4) bbh = @nufunc((z1-@tw)-@nufunc4(z2-@tw4)^@exp4) cch = @nufunc4((z2-@tw4)^@exp4-@nufunc(z1-@tw)) ff = real((z3-@tw5)^@exp5) dd = @nufunc5(ff) jj = (z4-@tw6) kk = (z1-@tw2) oo = (z1-@tw3) gg = @nufunc2(kk) hh = @nufunc6(jj)^@exp6 pp = @nufunc3(oo) if @mmode == "z+|z|" nuvar = aah elseif @mmode == "z-|z|" nuvar = bbh elseif @mmode == "|z|-z" nuvar = cch endif if @change == "1" z1 = nuvar^@exp1 elseif @change == "2" if @mmode2 == "z+|z|" z1 = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif elseif @change == "3" if @mmode2 == "z+|z|" z1 = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif elseif @change == "4" if @mmode2 == "z+|z|" z1 = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif elseif @change == "5" if @mmode2 == "z+|z|" z1 = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif elseif @change == "6" if @mmode2 == "z+|z|" z1 = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif elseif @change == "7" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "8" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "9" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "10" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "11" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif endif endif x = real(@fnh(@nufnh(z1-@x1)*@x2)^@x3) y = imag(@fni(@nufni(z1-@y1)*@y2)^@y3) complex a = @m * real(@fn(y^@expi / x^@expj)) complex ab = a complex bb = a complex c = a if @variation == 0 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(a-@cc)) else c = @fncc((a-@cc)) endif a = @m * (fn1(bb + @c)^2 + fn2(c + @c)^2) elseif @variation == 1 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(a-@cc)) else c = @fncc((a-@cc)) endif a = bb * c + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 2 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(|a|-@cc)) else c = @fncc(|a|-@cc) endif a = bb-c + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 3 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(|a|-@cc)) else c = @fncc(|a|-@cc) endif a = bb+c + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 4 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(|a|-@cc)) else c = @fncc(|a|-@cc) endif a = c/bb + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 5 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(atan2(a)-@cc)) else c = @fncc(atan2(a)-@cc) endif a = bb*c + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 6 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(a-@cc)) else c = @fncc(a-@cc) endif a = bb + c + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 7 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(|a|-@cc)) else c = @fncc(|a|-@cc) endif a = c^bb + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 8 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(a-@cc)) else c = @fncc(a-@cc) endif a = (1-bb)*(c+1)+@c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 9 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(a-@cc)) else c = @fncc(a-@cc) endif a = bb^c+@c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 10 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(|a|-@cc)) else c = @fncc(|a|-@cc) endif a = bb /c + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 11 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(a-@cc)) else c = @fncc(a-@cc) endif a = (bb+1)/(c)+ @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 12 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(atan2(a)-@cc)) else c = @fncc(atan2(a)-@cc) endif a = bb+c + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 13 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(atan2(a)-@cc)) else c = @fncc(atan2(a-@cc)) endif a = c/bb + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif elseif @variation == 14 if @inv1 == true bb = @fnbb(1/(a-@bb)) else bb = @fnbb(a-@bb) endif if @inv2 == true c = @fncc(1/(atan2(a)-@cc)) else c = @fncc(atan2(a-@cc)) endif a = c^bb + @c if @spin == 0 a = fn1(1 - a) / fn3(ab-@nup1) elseif @spin == 1 a = fn1(1 - a^2) elseif @spin == 2 a = fn1(1 - a)*fn3(ab-@nup1) elseif @spin == 3 a = fn1(1 - a)^fn3(ab-@nup1) elseif @spin == 4 a = fn1(1 - a)+fn3(ab-@nup1) endif endif if @varType == "Normal" a = @varFn((a-@xb1)*@xb2)^@xb3 elseif @varType == "Modulus" a = @varFn((|a|-@xb1)*@xb2)^@xb3 elseif @varType == "Atan2" a = @varFn(atan2(a-@xb1)*@xb2)^@xb3 elseif @varType == "Real" a = @varFn(real(a-@xb1)*@xb2)^@xb3 elseif @varType == "Imag" a = @varFn(imag(a-@xb1)*@xb2)^@xb3 endif if @opadd == "None" a = a elseif @opadd == "+(X+Y)" a = a + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" a = a - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" a = a + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" a = a - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" a = a + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" a = a - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" a = a + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" a = a - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" a = a + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" a = a - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" a = a + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" a = a - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" a = a + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" a = a - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" a = a + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" a = a - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif complex zq = (0,0) if @ztype == "Normal" zq = (@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Modulus(z)" zq = (@ztypeFn(|z1|-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Atan2(z)" zq = atan2(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Real(z)" zq = real(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 elseif @ztype == "Imag(z)" zq = imag(@ztypeFn(z1-@zamt1)*@zamt2)^@zamt3 endif if @opr == 0 if @mode == 0 temp = abs(|zq| - |1/a|) else temp = cabs(zq - a) endif elseif @opr == 1 if @mode == 0 temp = abs(|zq| + |1/a|) else temp = cabs(zq + a) endif endif if @avgflv == true if @mode_change == 0 dsum = temp + (dsum) dave = dsum/(i+1) elseif @mode_change == 1 dsum = cabs(cotanh(temp +(dsum))) dave = dsum/(i+1) elseif @mode_change == 2 dsum = cabs(log(temp +(dsum))) dave = dsum/(i+1) elseif @mode_change == 3 dsum = |log(temp +(dsum))| dave = dsum/(i+1) dave = |sqrt(dave)| elseif @mode_change == 4 dsum = |atan(temp +(dsum))| dave = dsum/(i+1) dave = |dave| elseif @mode_change == 5 dsum = |tanh(temp +(dsum))| dave = dsum/(i+1) dave = |dave| elseif @mode_change == 6 dsum = cabs(asin(temp +(dsum))) dave = dsum/(i+1) dave = cabs(dave) elseif @mode_change == 7 dsum = cabs(sqrt(temp +(dsum))) dave = dsum/(i+1) elseif @mode_change == 8 dsum = cabs(cos(temp +(dsum))) dave = dsum/(i+1) elseif @mode_change == 9 dsum = cabs(recip(temp +(dsum))) dave = dsum/(i+1) elseif @mode_change == 10 dsum = |recip(temp +(dsum))| dave = dsum/(i+1) dave = |sqrt(dave)| elseif @mode_change == 11 dsum = cabs(temp +(dsum)) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 12 dsum = cabs(temp +(dsum)) dave = dsum/(i+1) dave = cabs(log(dave)) elseif @mode_change == 13 dsum = cabs(temp +(dsum)) dave = dsum/(i+1) dave = cabs(atanh(dave)) elseif @mode_change == 14 dsum = cabs(round(temp +(dsum))) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 15 dsum = cabs(trunc(temp +(dsum))) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 16 dsum = cabs(round(temp +(dsum))) dave = dsum/(i+1) dave = cabs(log(dave)) elseif @mode_change == 17 dsum = cabs(trunc(temp +(dsum))) dave = dsum/(i+1) dave = cabs(log(dave)) endif else dsum = temp +(dsum) dave = dsum/(i+1) if @mode_change == 0 dsum = temp + (dsum) elseif @mode_change == 1 dsum = cabs(cotanh(temp +(dsum))) elseif @mode_change == 2 dsum = cabs(log(temp +(dsum))) elseif @mode_change == 3 dsum = |log(temp +(dsum))| dave = |sqrt(dave)| elseif @mode_change == 4 dsum = |atan(temp +(dsum))| dave = |dave| elseif @mode_change == 5 dsum = |tanh(temp +(dsum))| dave = |dave| elseif @mode_change == 6 dsum = cabs(asin(temp +(dsum))) dave = cabs(dave) elseif @mode_change == 7 dsum = cabs(sqrt(temp +(dsum))) elseif @mode_change == 8 dsum = cabs(cos(temp +(dsum))) elseif @mode_change == 9 dsum = cabs(recip(temp +(dsum))) dave = dsum/(i+1) elseif @mode_change == 10 dsum = |recip(temp +(dsum))| dave = |sqrt(dave)| elseif @mode_change == 11 dsum = cabs(temp +(dsum)) dave = dsum/(i+1) dave = cabs(recip(dave)) elseif @mode_change == 12 dsum = cabs(temp +(dsum)) dave = cabs(log(dave)) elseif @mode_change == 13 dsum = cabs(temp +(dsum)) dave = cabs(atanh(dave)) elseif @mode_change == 14 dsum = cabs(round(temp +(dsum))) dave = cabs(recip(dave)) elseif @mode_change == 15 dsum = cabs(trunc(temp +(dsum))) dave = cabs(recip(dave)) elseif @mode_change == 16 dsum = cabs(round(temp +(dsum))) dave = cabs(log(dave)) elseif @mode_change == 17 dsum = cabs(trunc(temp +(dsum))) dave = cabs(log(dave)) endif endif if @follow == true if iter >= @skip && iter < @show if @version < 2.47 if @reverse if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif patnum = patnum +1 else if @reverse == false if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif if @pattern != 0 patnum = patnum + 1 endif endif if (@trapalliterations == false || trapping) ; if we're checking for traps... if @edges == "Closest" if temp < min_dist min_dist = temp + @edge*.1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "First" if temp < @threshold min_dist = temp + @edge*.1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Last" if temp < @threshold && !trapped min_dist = temp + @edge*.1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Average" if temp < @threshold min_dist = dave + @edge*.1 distance = dave trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Farthest" if temp > min_dist && temp < @threshold min_dist = temp + @edge*.1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Sum" if temp < @threshold min_dist = distance + temp + @edge*.1 distance = distance + temp trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Sum 2" if temp < @threshold min_dist = distance + temp + @edge*.1 distance = distance + min_dist + .1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif endif endif endif elseif @follow == false if @version < 2.47 if @reverse if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter)) ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif patnum = patnum + 1 else if @reverse == false if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif if @pattern != 0 patnum = patnum + 1 endif endif if (@trapalliterations == false || trapping) ; if we're checking for traps... if iter >= @skip && iter < @show if @edges == "Closest" if temp < min_dist min_dist = temp + @edge*.1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "First" if temp < @threshold min_dist = temp + @edge*.1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Last" if temp < @threshold && !trapped min_dist = temp + @edge*.1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Average" if temp < @threshold min_dist = dave + @edge*.1 distance = dave trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Farthest" if temp > min_dist && temp < @threshold min_dist = temp + @edge*.1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Sum" if temp < @threshold min_dist = distance + temp + @edge*.1 distance = distance + temp trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif elseif @edges == "Sum 2" if temp < @threshold min_dist = distance + temp + @edge*.1 distance = distance + min_dist + .1 trap_z = z1 trap2_z = #z trap_iter = iter trap_point = a trapped = true endif endif endif endif endif iter = iter + 1 if @version < 2.45 iter = i endif i = i + 1 z_values[i] = #z final: if trapped if tx > 0 if @ztyp == "#z" tz = ((#z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Morph z" tz = ((z1-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trap z" tz = ((trap_z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trap #z" tz = ((trap2_z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Dist" tz = ((temp-@txia1)*@txib1)^@txic1 endif if @tt == 0 tz = @fntx2(@fntx1(tz))^@exad1 elseif @tt == 1 tz = @fntx1(real(tz))^@exad1+@fntx2(imag(tz))^@exad2 elseif @tt == 2 tz = @fntx1(real(tz))^@exad1-@fntx2(imag(tz))^@exad2 elseif @tt == 3 tz = @fntx1(real(tz))^@exad1*@fntx2(imag(tz))^@exad2 elseif @tt == 4 tz = @fntx1(imag(tz))^@exad1-@fntx2(real(tz))^@exad2 elseif @tt == 5 tz = @fntx2(@fntx1(x))^@exad1 elseif @tt == 6 tz = @fntx2(@fntx1(y))^@exad1 elseif @tt == 7 tz = @fntx1(x)^@exad1+@fntx2(y)^@exad2 elseif @tt == 8 tz = @fntx1(x)^@exad1-@fntx2(y)^@exad2 elseif @tt == 9 tz = @fntx2(y)^@exad2-@fntx1(x)^@exad1 elseif @tt == 10 tz = @fntx1(x)^@exad1*@fntx2(y)^@exad2 elseif @tt == 11 tz = @fntx1(x)^@exad1/@fntx2(y)^@exad2 elseif @tt == 12 tz = @fntx2(y)^@exad2/@fntx1(x)^@exad1 elseif @tt == 13 tz = @fntx1(x)^@exad1^@fntx2(y)^@exad2 elseif @tt == 14 tz = @fntx2(y)^@exad1^@fntx1(x)^@exad2 elseif @tt == 15 tz = @fntx1(x)^@exad1+@fntx2(tz)^@exad2 elseif @tt == 16 tz = @fntx1(x)^@exad1-@fntx2(tz)^@exad2 elseif @tt == 17 tz = @fntx2(tz)^@exad2-@fntx1(x)^@exad1 elseif @tt == 18 tz = @fntx1(x)^@exad1*@fntx2(tz)^@exad2 elseif @tt == 19 tz = @fntx1(x)^@exad1/@fntx2(tz)^@exad2 elseif @tt == 20 tz = @fntx2(tz)^@exad2/@fntx1(x)^@exad1 elseif @tt == 21 tz = @fntx1(y)^@exad1+@fntx2(tz)^@exad2 elseif @tt == 22 tz = @fntx1(y)^@exad1-@fntx2(tz)^@exad2 elseif @tt == 23 tz = @fntx2(tz)^@exad2-@fntx1(y)^@exad1 elseif @tt == 24 tz = @fntx1(y)^@exad1*@fntx2(tz)^@exad2 elseif @tt == 25 tz = @fntx1(y)^@exad1/@fntx2(tz)^@exad2 elseif @tt == 26 tz = @fntx2(tz)^@exad2/@fntx1(y)^@exad1 endif float zr = real(tz)%(@tv/10)/@ts*10 float zi = imag(tz)%(@tv/10)/@ts*10 float rz = floor(zr) float iz = floor(zi) if @tc > 0 float a1 = (rz + iz - 2)/ct float a2 = (rz + iz + 2)/ct else float a1 = (rz + iz - 2)%ct float a2 = (rz + iz + 2)%ct endif float a3 = a1 float a4 = a2 i = 0 float ez = 0 float h = 1 repeat h = h / 2 float fr = rz + h float fi = iz + h float za = (a1 + a2 + a3 + a4) / 4 ez = ez + za if (zr > fr) rz = fr if (zi > fi) iz = fi a1 = ez else a2 = ez endif else if (zi > fi) iz = fi a3 = ez else a4 = ez endif endif it = it + 1 until it >= 20 endif t2 = abs((za-real(@fntx3(za)))) if @add_sgn == false t2 = (za-real(@fntx3(za))) endif ;Random complex hasard = #random texture_rnd = 10 * @rnd2 * (real(hasard)+ imag(hasard)) ; fBm if (@fbmtxt != 0) r1 = (0,1) ^ (@fbmangle / 90.0) r2 = (0,1) ^ (@fbmastep / 90.0) if @ztyp4 == "#z" tz = ((#z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Morph z" tz = ((z1-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trap z" tz = ((trap_z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trap #z" tz = ((trap2_z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Dist" tz = ((temp-@txia4)*@txib4)^@txic4 endif if @fbminit == 0 pfb = (@fntx9(@fntx8(tz))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 1 pfb = (@fntx8(real(tz))^@exad8+@fntx9(imag(tz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 2 pfb = (@fntx8(real(tz))^@exad8-@fntx9(imag(tz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 3 pfb = (@fntx8(real(tz))^@exad8*@fntx9(imag(tz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 4 pfb = (@fntx8(imag(tz))^@exad8-@fntx9(real(tz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 5 pfb = (@fntx9(@fntx8(x))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 6 pfb = (@fntx9(@fntx8(y))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 7 pfb = (@fntx8(x)^@exad8+@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 8 pfb = (@fntx8(x)^@exad8-@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 9 pfb = (@fntx9(y)^@exad9-@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 10 pfb = (@fntx8(x)^@exad8*@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 11 pfb = (@fntx8(x)^@exad8/@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 12 pfb = (@fntx9(y)^@exad9/@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 13 pfb = (@fntx8(x)^@exad8^@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 14 pfb = (@fntx9(y)^@exad9^@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 15 pfb = (@fntx8(x)^@exad8+@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 16 pfb = (@fntx8(x)^@exad8-@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 17 pfb = (@fntx9(tz)^@exad9-@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 18 pfb = (@fntx8(x)^@exad8*@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 19 pfb = (@fntx8(x)^@exad8/@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 20 pfb = (@fntx9(tz)^@exad9/@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 21 pfb = (@fntx8(y)^@exad8+@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 22 pfb = (@fntx8(y)^@exad8-@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 23 pfb = (@fntx9(tz)^@exad9-@fntx8(y)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 24 pfb = (@fntx8(y)^@exad8*@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 25 pfb = (@fntx8(y)^@exad8/@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 26 pfb = (@fntx9(tz)^@exad9/@fntx8(y)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 27 pfb = (@fntx9(@fntx8(pixel))^@exad8)* @fbmscale * r1 + @fbmoffset endif float summ = 0.0 float freq = 1.0 int i = @fbmoct while (i > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = real(@fbmrfn2(@fbmrfn1(pfb))) % 256 float by0 = imag(@fbmifn2(@fbmifn1(pfb))) % 256 if (bx0 < 0) bx0 = bx0 + 256 endif if (by0 < 0) by0 = by0 + 256 endif float bx1 = (bx0 + @hc) % 256 float by1 = (by0 + @hd) % 256 float rx0 = real(pfb) - floor(real(pfb)) float ry0 = imag(pfb) - floor(imag(pfb)) float rx1 = rx0 - @ha float ry1 = ry0 - @hb float b00 = (bx0^@fbmpower % 65536 + by0)^@fbmpower % 65536 float b10 = (bx1^@fbmpower % 65536 + by0)^@fbmpower % 65536 float b01 = (bx0^@fbmpower % 65536 + by1)^@fbmpower % 65536 float b11 = (bx1^@fbmpower % 65536 + by1)^@fbmpower % 65536 float g_b00_0 = (b00)^@fbmpower*0.25 % 512 - 256 float g_b10_0 = (b10)^@fbmpower*0.25 % 512 - 256 float g_b01_0 = (b01)^@fbmpower*0.25 % 512 - 256 float g_b11_0 = (b11)^@fbmpower*0.25 % 512 - 256 float g_b00_1 = (b00+1)^@fbmpower*0.25 % 512 - 256 float g_b10_1 = (b10+1)^@fbmpower*0.25 % 512 - 256 float g_b01_1 = (b01+1)^@fbmpower*0.25 % 512 - 256 float g_b11_1 = (b11+1)^@fbmpower*0.25 % 512 - 256 float ddd = 0.0; ddd = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * ddd g_b00_1 = g_b00_1 * ddd ddd = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * ddd g_b10_1 = g_b10_1 * ddd ddd = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * ddd g_b01_1 = g_b01_1 * ddd ddd = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * ddd g_b11_1 = g_b11_1 * ddd float u1 = rx0 * g_b00_0 + ry0 * g_b00_1 float v1 = rx1 * g_b10_0 + ry0 * g_b10_1 float u2 = rx0 * g_b01_0 + ry1 * g_b01_1 float v2 = rx1 * g_b11_0 + ry1 * g_b11_1 float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float aaa = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) summ = summ + (aaa + sy*(b-aaa))*freq freq = freq * @fbmstep pfb = pfb * r2 / @fbmstep i = i - 1 endwhile texture_fbm = 10 * @fbmtxt * summ endif if @fbm_limit !=0 texture_fbm= texture_fbm % @fbm_limit endif if @fbm_sgn == true texture_fbm = abs(texture_fbm) endif ;decimal if @dectxt > 0 if @ztyp2 == "#z" tz = ((#z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Morph z" tz = ((z1-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap z" tz = ((trap_z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap #z" tz = ((trap2_z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Dist" tz = ((temp-@txia2)*@txib2)^@txic2 endif if @dec_init == 0 pd = real(@fntx5(@fntx4(tz))^@exad4) elseif @dec_init == 1 pd = real(@fntx4(real(tz))^@exad4+@fntx5(imag(tz))^@exad5) elseif @dec_init == 2 pd = real(@fntx4(real(tz))^@exad4-@fntx5(imag(tz))^@exad5) elseif @dec_init == 3 pd = real(@fntx4(real(tz))^@exad4*@fntx5(imag(tz))^@exad5) elseif @dec_init == 4 pd = real(@fntx4(imag(tz))^@exad4-@fntx5(real(tz))^@exad5) elseif @dec_init == 5 pd = real(@fntx5(@fntx4(x))^@exad4) elseif @dec_init == 6 pd = real(@fntx5(@fntx4(y))^@exad4) elseif @dec_init == 7 pd = real(@fntx4(x)^@exad4+@fntx5(y)^@exad5) elseif @dec_init == 8 pd = real(@fntx4(x)^@exad4-@fntx5(y)^@exad5) elseif @dec_init == 9 pd = real(@fntx5(y)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 10 pd = real(@fntx4(x)^@exad4*@fntx5(y)^@exad5) elseif @dec_init == 11 pd = real(@fntx4(x)^@exad4/@fntx5(y)^@exad5) elseif @dec_init == 12 pd = real(@fntx5(y)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 13 pd = real(@fntx4(x)^@exad4^@fntx5(y)^@exad5) elseif @dec_init == 14 pd = real(@fntx5(y)^@exad4^@fntx4(x)^@exad5) elseif @dec_init == 15 pd = real(@fntx4(x)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 16 pd = real(@fntx4(x)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 17 pd = real(@fntx5(tz)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 18 pd = real(@fntx4(x)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 19 pd = real(@fntx4(x)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 20 pd = real(@fntx5(tz)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 21 pd = real(@fntx4(y)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 22 pd = real(@fntx4(y)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 23 pd = real(@fntx5(tz)^@exad4-@fntx4(y)^@exad5) elseif @dec_init == 24 pd = real(@fntx4(y)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 25 pd = real(@fntx4(y)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 26 pd = real(@fntx5(tz)^@exad4/@fntx4(y)^@exad5) endif if @dec_type == 0 pd = pd-ceil(pd*@dec_scale)/@dec_scale elseif @dec_type == 1 pd = pd-floor(pd*@dec_scale)/@dec_scale elseif @dec_type == 2 pd = pd-trunc(pd*@dec_scale)/@dec_scale elseif @dec_type == 3 pd = pd-round(pd*@dec_scale)/@dec_scale elseif @dec_type == 4 pd = pd-real(@fndec(pd*@dec_scale))/@dec_scale elseif @dec_type == 5 pd = pd-round(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 6 pd = pd-round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 7 pd = pd+round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 8 pd = pd-round(pd*@dec_scale)/@dec_scale-trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 9 pd = pd-round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 10 pd = pd+round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 11 pd = pd-trunc(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 12 pd = pd-trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 13 pd = pd+trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 14 pd = pd-trunc(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 15 pd = pd-trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 16 pd = pd+trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 17 pd = pd-ceil(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 18 pd = pd-ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 19 pd = pd+ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale)/@dec_scale2 endif if @dec_size != 0 pd = pd/@dec_size endif texture_dec = @dectxt*pd if @dec_limit !=0 texture_dec= texture_dec%@dec_limit endif if @dec_sgn == true texture_dec = abs(texture_dec) endif endif texture_dec = 10 * texture_dec * @decamt if (@gnarl_amt != 0) if @ztyp3 == "#z" tz = ((#z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Morph z" tz = ((z1-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap z" tz = ((trap_z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap #z" tz = ((trap2_z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Dist" tz = ((temp-@txia3)*@txib3)^@txic3 endif if @gnarl_init == 0 p = @fntx7(@fntx6(tz))^@exad6 elseif @gnarl_init == 1 p = @fntx6(real(tz))^@exad6+@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 2 p = @fntx6(real(tz))^@exad6-@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 3 p = @fntx6(real(tz))^@exad6*@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 4 p = @fntx6(imag(tz))^@exad6-@fntx7(real(tz))^@exad7 elseif @gnarl_init == 5 p = @fntx7(@fntx6(x))^@exad6 elseif @gnarl_init == 6 p = @fntx7(@fntx6(y))^@exad6 elseif @gnarl_init == 7 p = @fntx6(x)^@exad6+@fntx7(y)^@exad7 elseif @gnarl_init == 8 p = @fntx6(x)^@exad6-@fntx7(y)^@exad7 elseif @gnarl_init == 9 p = @fntx7(y)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 10 p = @fntx6(x)^@exad6*@fntx7(y)^@exad7 elseif @gnarl_init == 11 p = @fntx6(x)^@exad6/@fntx7(y)^@exad7 elseif @gnarl_init == 12 p = @fntx7(y)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 13 p = @fntx6(x)^@exad6^@fntx7(y)^@exad7 elseif @gnarl_init == 14 p = @fntx7(y)^@exad6^@fntx6(x)^@exad7 elseif @gnarl_init == 15 p = @fntx6(x)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 16 p = @fntx6(x)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 17 p = @fntx7(tz)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 18 p = @fntx6(x)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 19 p = @fntx6(x)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 20 p = @fntx7(tz)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 21 p = @fntx6(y)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 22 p = @fntx6(y)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 23 p = @fntx7(tz)^@exad6-@fntx6(y)^@exad7 elseif @gnarl_init == 24 p = @fntx6(y)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 25 p = @fntx6(y)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 26 p = @fntx7(tz)^@exad6/@fntx6(y)^@exad7 elseif @gnarl_init == 27 p = @fntx7(@fntx6(pixel))^@exad6 endif if @gnarl_scaling == 0 p = p-ceil(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 1 p = p-floor(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 2 p = p-trunc(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 3 p = p-round(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 4 p = p-real(@fngnarl(p*@gnarl_scale))/@gnarl_scale elseif @gnarl_scaling == 5 p = p-round(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 6 p = p-round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 7 p = p+round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 8 p = p-round(p*@gnarl_scale)/@gnarl_scale-trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 9 p = p-round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 10 p = p+round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 11 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 12 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 13 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 14 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 15 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 16 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 17 p = p-ceil(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 18 p = p-ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 19 p = p+ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale)/@gnarl_scale2 endif if @gnarl_size != 0 p = p/@gnarl_size endif xx = real(p) yy = imag(p) float xOld = 0 int iter3 = @gnarl_octaves while (iter3 > 0) iter3 = iter3-1 xOld = xx if @gnarl_form == 0 xx = xx - sin(yy + sin(yy)) yy = yy - sin(xOld + sin(xOld)) elseif @gnarl_form == 1 xx = xx - sin(yy + log(yy + cos(yy))) yy = yy - sin(xOld + log(xOld + cos(xOld))) elseif @gnarl_form == 2 xx = xx - sin(yy + cos(yy)) yy = yy - sin(xOld + cos(xOld)) elseif @gnarl_form == 3 xx = xx - sin(yy + log(yy + tan(yy))) yy = yy - sin(xOld + log(xOld + tan(xOld))) elseif @gnarl_form == 4 xx = xx - sin(yy + log(yy + sin(yy))) yy = yy - sin(xOld + log(xOld + sin(xOld))) endif endwhile if (@gnarl_type == 0) texture_gna = real(@fng(xx)) elseif (@gnarl_type == 1) texture_gna = real(@fng(yy)) elseif (@gnarl_type == 2) texture_gna = real(@fng(xx+yy)) elseif (@gnarl_type == 3) texture_gna = real(@fng(xx*yy)) elseif (@gnarl_type == 4) texture_gna = real(@fng(xx-yy)) elseif (@gnarl_type == 5) texture_gna = real(@fng(xx/yy)) elseif (@gnarl_type == 6) texture_gna = real(@fng(yy/xx)) elseif (@gnarl_type == 7) texture_gna = real(@fng(xx^yy)) elseif (@gnarl_type == 8) texture_gna = real(@fng(yy^xx)) elseif (@gnarl_type == 9) texture_gna = real(@fng(1/xx)) elseif (@gnarl_type == 10) texture_gna = real(@fng(1/yy)) elseif (@gnarl_type == 11) texture_gna = atan2(xx+1i*yy)/(2*#pi) if (texture_gna < 0) texture_gna = texture_gna + 1 endif elseif (@gnarl_type == 12) texture_gna = |xx+1i*yy| elseif (@gnarl_type == 13) texture_gna = (xx+yy+|xx+1i*yy|)/3 elseif (@gnarl_type == 14) texture_gna = (xx*yy*|xx+1i*yy|)^(1/3) endif if @gnarl_limit !=0 texture_gna= 10 * (texture_gna%@gnarl_limit) * @gnarl_amt endif endif ;geometrix if (@trtxt != 0) if @ztyp5 == "#z" tz = ((#z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Morph z" tz = ((z1-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap z" tz = ((trap_z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Trap #z" tz = ((trap2_z-@trxia)*@trxib)^@trxic elseif @ztyp5 == "Dist" tz = ((temp-@trxia)*@trxib)^@trxic endif if @trinit == 0 ptr = (@fntx11(@fntx10(tz))^@exad10) elseif @trinit == 1 ptr = (@fntx10(real(tz))^@exad10+@fntx11(imag(tz))^@exad11) elseif @trinit == 2 ptr = (@fntx10(real(tz))^@exad10-@fntx11(imag(tz))^@exad11) elseif @trinit == 3 ptr = (@fntx10(real(tz))^@exad10*@fntx11(imag(tz))^@exad11) elseif @trinit == 4 ptr = (@fntx10(imag(tz))^@exad10-@fntx11(real(tz))^@exad11) elseif @trinit == 5 ptr = (@fntx11(@fntx10(x))^@exad10) elseif @trinit == 6 ptr = (@fntx11(@fntx10(y))^@exad10) elseif @trinit == 7 ptr = (@fntx10(x)^@exad10+@fntx11(y)^@exad11) elseif @trinit == 8 ptr = (@fntx10(x)^@exad10-@fntx11(y)^@exad11) elseif @trinit == 9 ptr = (@fntx11(y)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 10 ptr = (@fntx10(x)^@exad10*@fntx11(y)^@exad11) elseif @trinit == 11 ptr = (@fntx10(x)^@exad10/@fntx11(y)^@exad11) elseif @trinit == 12 ptr = (@fntx11(y)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 13 ptr = (@fntx10(x)^@exad10^@fntx11(y)^@exad11) elseif @trinit == 14 ptr = (@fntx11(y)^@exad11^@fntx10(x)^@exad10) elseif @trinit == 15 ptr = (@fntx10(x)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 16 ptr = (@fntx10(x)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 17 ptr = (@fntx11(tz)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 18 ptr = (@fntx10(x)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 19 ptr = (@fntx10(x)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 20 ptr = (@fntx11(tz)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 21 ptr = (@fntx10(y)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 22 ptr = (@fntx10(y)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 23 ptr = (@fntx11(tz)^@exad11-@fntx10(y)^@exad10) elseif @trinit == 24 ptr = (@fntx10(y)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 25 ptr = (@fntx10(y)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 26 ptr = (@fntx11(tz)^@exad11/@fntx10(y)^@exad10) endif endif complex tz = z_values[#numiter-1] complex tz = ptr float zrzr = real(@fnzr(ptr))*@scc float zizi = imag(@fnzi(ptr))*@scc float rzrz = floor(zrzr) float iziz = floor(zizi) r0r0 = rzrz - 1 i0i0 = iziz - 1 r1r1 = rzrz + 1 i1i1 = iziz + 1 azaz = cabs(@fn1tx(r0r0) + @fn2tx(i0i0)) azaz = cabs(@fn3tx(azaz)) azaz = (azaz % @shad1 * 2) bzbz = cabs(@fn1tx(r1r1) + @fn2tx(i0i0)) bzbz = cabs(@fn3tx(bzbz)) bzbz = (bzbz % @shad2 * 2) czcz = cabs(@fn1tx(r1r1) + @fn2tx(i1i1)) czcz = cabs(@fn3tx(czcz)) czcz = (czcz % @shad3 * 2) dzdz = cabs(@fn1tx(r0r0) + @fn2tx(i1i1)) dzdz = cabs(@fn3tx(dzdz)) dzdz = (dzdz % @shad4 * 2) i = 1 repeat avav = avav / (@trp1 * 2) xbxb = xbxb / (@trp2 * 2) frfr = rzrz + avav fifi = iziz + avav zaza = (azaz + bzbz + czcz + dzdz) / (@trp3 * 4) zzzz = zzzz * xbxb + zaza if (zrzr > frfr) if (zizi > fifi) rzrz = frfr iziz = fifi azaz = zzzz else rzrz = frfr dzdz = zzzz endif else if (zizi > fifi) iziz = fifi bzbz = zzzz else czcz = zzzz endif endif i = i + 1 until i >= @freq texture_tr = (zaza-trunc(zaza*2)^@exp)*@trtxt if @geo_limit != 0 texture_tr = ((zaza-trunc(zaza)^@exp*2)% @geo_limit)*@trtxt endif if @geo_sgn == true texture_tr = abs(texture_tr) endif texture = (texture_rnd + texture_fbm + texture_dec + texture_gna \ + texture_tr)*@txamt/10000 if @inv == true if real(1/@msk) > min_dist && !(@msk == 0) #solid = true endif else if real(1/@msk) < min_dist && !(@msk == 0) #solid = true endif endif ;#index = tmp if @coloring == 0 ; Distance tmp = min_dist elseif @coloring == 1 ; Magnitude tmp = cabs(@colorFn((trap_z-@tz1)*@tz2)^@tz3) elseif @coloring == 2 ; Iteration tmp = 0.01 * real((@colorFn(trap_iter-@tz1)*@tz2)^@tz3) elseif @coloring == 3 ; Real tmp = real(@colorFn((trap_z-@tz1)*@tz2)^@tz3) elseif @coloring == 4 ; Imaginary tmp = imag(@colorFn((trap_z-@tz1)*@tz2)^@tz3) elseif @coloring == 5 ; Angle float b = atan2(@colorFn((trap_z-@tz1)*@tz2)^@tz3) if b < 0 b = b + 2 * #pi endif b = 1 / (2 * #pi) * b tmp = b elseif @coloring == 6 ; Modulated iteration tmp = (real((@colorFn(trap_iter-@tz1)*@tz2)^@tz3) % @iter_mod) / @iter_mod elseif @coloring == 7 ; Random iteration tmp = (((ra * (real((@colorFn(trap_iter-@tz1)*@tz2)^@tz3) + @rnd) + rc) % rm) % @iter_mod) / @iter_mod elseif @coloring == 8 ; Real #2 - corrected by using absolute value tmp = abs(real((@colorFn(trap_z-@tz1)*@tz2)^@tz3)) elseif @coloring == 9 ; Imaginary - ditto tmp = abs(imag((@colorFn(trap_z-@tz1)*@tz2)^@tz3)) elseif @coloring == 10 ; Angle to trap float b = atan2((@colorFn((trap_z-trap_point)-@tz1)*@tz2)^@tz3) if b < 0 b = b + 2 * #pi endif b = 1 / (2 * #pi) * b tmp = b endif #index = real(@indfn(tmp^@shad+(texture)))+(tx*@txamt/10)/100 + t2*(tx*@txamt/10)/100 \ + rn*@r*(tx*@txamt/10)/100 else #solid = true endif default: title = "Harlequin II" param version caption = "Version" default = 2.47 visible = false endparam int param edges caption = "Trapping Mode" enum = "Closest""First""Last""Average""Farthest""Sum""Sum 2" default = 0 hint = "'Closest' is the default mode with continuous elements. 'First' \ gives the elements discrete edges with the earlier, smallier \ elements overlaying the later ones. 'Last' overlays the larger \ elements over the smaller ones.'Element Width' determines the \ element cutoff" endparam int param mode_change caption = "Avg. Flavor" enum = "Normal""1""2""3""4""5""6""7""8""9""10""11""12""13""14""15""16""17" default = 1 hint = "Changes the gradient as applied to the 'Average' trap mode. \ some differences are subtle. You may need to change your \ gradient for best effect" visible = @edges == 3 endparam bool param avgflv caption = "Change Avg. Flavor" default = false visible = @edges == 3 endparam float param threshold caption = "Element Width" default = 1 hint = "Use this to vary the cutoff of the elements using 'First' and \ 'Last' trapping modes" visible = @edges != "Closest" endparam param coloring caption = "Coloring Mode" enum = "Distance" "Magnitude" "Iteration" "Real" "Imag" "Angle" \ "Modulated Iter" "Random Iter" "Real #2" "Imag #2" "Angle to Trap" endparam float param iter_mod caption = "No. of Colors" default = 8.0 visible = @coloring == "Modulated Iter" || @coloring == "Random Iter" hint = "The number of different colors used for the Modulated Iter \ and Random Iter coloring modes." endparam param rnd caption = "Random Seed" default = 0 visible = @coloring == "Random Iter" hint = "This is the random seed for the Random Iter coloring mode." endparam func colorFn caption = "Coloring Mode Fn" default = ident() hint = "Changes the gradient mapping onto the elements" visible = @coloring > 0 endfunc complex param tz1 caption = "Color Offset" default = (0,0) visible = @coloring > 0 hint = "Changes the gradient mapping onto the elements" endparam complex param tz2 caption = "Color Strength" default = (1,0) hint = "Changes the gradient mapping onto the elements" visible = @coloring > 0 endparam complex param tz3 caption = "Color Power" default = (1,0) hint = "Changes the gradient mapping onto the elements" visible = @coloring > 0 endparam int param @skip caption = "Start Iteration" default = 0 hint = "Indicates on which iteration trapping will start." endparam int param @show caption = "Max Iterations" default = 100000 hint = "How many iterations can be shown from the end back." endparam bool param trapalliterations caption = "Limited Iterations" default = false hint = "Allows selectable blocks of iterations \ to be trapped and others skipped in a repeating pattern." endparam int param trapskip caption = "Iters to Trap [*skip]" default = 3 min = 1 hint = "This is the number of iterations to show for traps \ in a single block. When the 'Reverse Trapped/Skipped \ Iters' param is unchecked this becomes the number \ of iterations to hide." visible = @trapalliterations == true endparam int param trapiter caption = "Iters to Skip [*trap]" default = 3 min = 1 hint = "This is the number of iterations to hide for traps \ in a single block. When the 'Reverse Trapped/Skipped \ Iters' param is unchecked this becomes the number \ of iterations to show." visible = @trapalliterations == true endparam int param pattern caption = "Pattern Repeat" default = 0 min = 0 hint = "This determines the number of times the \ blocks of trapped/skipped iters repeat, after which all \ further iters are skipped. If the 'Reverse Shown/Hidden \ Iters' param is checked, all further iters are instead \ shown after this number of repeats. A value of 0 creates \ infinite repeats" visible = @trapalliterations == true endparam bool param reverse caption = "*[Reverse Trapped/Skipped Iters]" default = false visible = @trapalliterations == true endparam $ifdef VER40 heading text = "*Checking this box reverses the function of \ the 'Iters to Trap' and 'Iters to Skip' \ params, as indicated in brackets in \ those params above." visible = @trapalliterations == true endheading $endif bool param follow caption = "Pattern Follows Start Iter" default = true hint = "If checked, the blocks of trapped/skipped \ iters start from the chosen start iter. \ If unchecked, the blocks start from iter 0, \ whether or not it is skipped." visible = @trapalliterations == true endparam float param edge caption = "Edge Definition" default = 0 hint = "As you increase this param the fractal elements begin to \ have defined edges, like in the 'First' trapping \ mode. You will have to adjust the gradient. Generally \ you will want to stay with positive values" endparam param variation caption = "Variation" enum = "1""2""3""4""5""6""7""8""9""10""11""12""13""14""15" default = 1 endparam param spin caption = "Spin" enum = "1""2""3""4""5" default = 1 visible = @variation != 0 endparam param mode caption = "Flavor" enum = "1" "2" default = 1 endparam param opr caption = "Operator" enum = "-""+" default = 0 endparam bool param inv1 caption = "Invert 1" default = false endparam bool param inv2 caption = "Invert 2" default = false endparam float param m caption = "Angle Multiplier" default = 2.0 endparam complex param c caption = "Harlequin Seed 1" default = (0,0) endparam complex param nup1 caption = "Harlequin Seed 2" default = (0,0) visible = @spin != 1 endparam float param expi caption = " X Exponent" default = 1.0 endparam float param expj caption = " Y Exponent" default = 1.0 endparam complex param bb caption = "Element Trim A" default = (0,0) endparam complex param cc caption = "Element Trim B" default = (0,0) endparam float param shad caption = "Shading" default = 1 endparam heading caption = "Functions" endheading func fn caption = "Primary Function" default = atan() endfunc func fn1 caption = "First Function" hint = "This function is used in all variations." default = exp() endfunc func fn3 caption = "Second Function" default = ident() visible = @spin != 1 endfunc func fn2 caption = "Variation 1 Function" hint = "This function is only used in variation 1." default = exp() visible = @variation == 0 endfunc func fnh caption = "Real Function" default = ident() endfunc func fni caption = "Imag Function" default = ident() endfunc func fnbb caption = "Extra Function 1" default = ident() endfunc func fncc caption = "Extra Function 2" default = ident() endfunc func indfn caption = "Final Index Function" default = ident() hint = "Changes the 'shading' of the elements." endfunc ;********************************************************** heading caption = "New Shaping Parameters" endheading bool param newStuff caption = "New Shaping Parameters" default = true endparam func nufnh caption = "X Function" default = ident() visible = @newStuff endfunc func nufni caption = "Y Function" default = ident() visible = @newStuff endfunc complex param x1 caption = "X Offset" default = (0,0) visible = @newStuff endparam complex param y1 caption = "Y Offset" default = (0,0) visible = @newStuff endparam complex param x2 caption = "X Strength" default = (1,0) visible = @newStuff endparam complex param y2 caption = "Y Strength" default = (1,0) visible = @newStuff endparam complex param x3 caption = "X Power" default = (1,0) visible = @newStuff endparam complex param y3 caption = "Y Power" default = (1,0) visible = @newStuff endparam int param ztype caption = "Mix Species" enum = "Normal""Modulus(z)""Atan2(z)""Real(z)""Imag(z)" default = 0 visible = @newStuff endparam func ztypeFn caption = "Mix Function 1" default = ident() hint = "Changes the shape of the elements" visible = @newStuff endfunc complex param zamt1 caption = "Mix Offset" default = (0,0) visible = @newStuff endparam complex param zamt2 caption = "Mix Strength" default = (1,0) visible = @newStuff endparam complex param zamt3 caption = "Mix Power" default = (1,0) visible = @newStuff endparam int param varType caption = "X/Y Species" enum = "Normal""Modulus""Atan2""Real""Imag" default = 0 visible = @newStuff endparam func varFn caption = "X/Y Function" default = ident() visible = @newStuff endfunc complex param xb1 caption = "X/Y Offset" default = (0,0) visible = @newStuff endparam complex param xb2 caption = "X/Y Strength" default = (1,0) visible = @newStuff endparam complex param xb3 caption = "X/Y Power" default = (1,0) visible = @newStuff endparam int param opadd caption = "Extra X/Y" enum = "None""+(X+Y)""-(X+Y)""+(X-Y)""-(X-Y)""+(Y-X)""-(Y-X)""+(X*Y)"\ "-(X*Y)""+(X/Y)""-(X/Y)""+(Y/X)""-(Y/X)""+(X^Y)""-(X^Y)""+(Y^X)""-(Y^X)" default = 0 hint = "These an extra set of X and Y values to the definition of Z whose \ strength and associated functions can be varied according to the \ parameters below" visible = @newStuff endparam func nufuncxtx caption = "Extra X Fn" default = sin() hint = "Varies the function associated with the X variable in the \ extra X/Y set." visible = @opadd > 0 && @newStuff endfunc func nufuncxty caption = "Extra Y Fn" default = sin() hint = "Varies the function associated with the Y variable in the \ extra X/Y set." visible = @opadd > 0 && @newStuff endfunc bool param nuflav caption = "Change Extra Y Fn Flavor" default = false visible = @opadd > 0 && @newStuff endparam complex param xtra1x caption = "Extra X Offset" default = (0,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra1y caption = "Extra Y Offset" default = (0,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra2x caption = "Extra X Strength" default = (1,0) hint = "Varies the strength in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra2y caption = "Extra Y Strength" default = (1,0) hint = "Varies the strength in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra3x caption = "Extra X Power" default = (1,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam complex param xtra3y caption = "Extra Y Power" default = (1,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @newStuff endparam heading caption = "Masking" visible = @msk == 0 endheading heading caption = "Masking [active]" visible = @msk != 0 endheading float param msk caption = "Masking" default = 0.0 endparam param inv caption = "Invert Mask" default = false endparam heading caption = "Morph Parameters" visible = (@change == 0 && @exp1 == (1,0) && @exp2 == (1,0) && @exp1 == (1,0) \ && @tw == (0,0) && @tw2 == (0,0) && @tw3 == (0,0) && @th2 == false) endheading heading caption = "Morph Parameters [active]" visible = (@change != 0 || @exp1 != (1,0) || @exp2 != (1,0) || @exp1 != (1,0) \ || @tw != (0,0) || @tw2 != (0,0) || @tw3 != (0,0) || @th2 == true) endheading param adv caption = "Morph Parameters" hint = "Additional shaping parameters and functions." default = false endparam bool param th2 caption = "Morph -> Morph II" default = false visible = @adv endparam param change caption = "Morph" enum = "1""2""3""4""5""6""7""8""9""10""11" default = 0 visible = @adv endparam param mmode caption = "Z1 Mode" enum = "z+|z|""z-|z|""|z|-z" default = 0 hint = "Defines relationship of z1 to z in 1st z block" visible = @adv && @th2 endparam param zchange1 caption = "Z1 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z1 variable " visible = @adv && @th2 endparam param mmode2 caption = "Z2 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z2 to z in 2nd z block" visible = @adv && @th2 && @change > 0 endparam param zchange2 caption = "Z2 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z2 variable " visible = @adv && @th2 && @change > 0 endparam param mmode3 caption = "Z3 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z3 to z in 3rd z block" visible = @adv && @th2 && @change > 5 endparam param zchange3 caption = "Z3 type" enum = "|z|""atan2(z)""real(z)""imag(z)" hint = "Determines the character of z3 variable " default = 0 visible = @adv && @th2 && @change > 5 endparam complex param exp1 caption = "Bias 1" default = (1,0) visible = @adv endparam complex param exp3 caption = "Bias 2" default = (1,0) visible = @adv && @change > 0 endparam complex param exp2 caption = "Bias 3" default = (1,0) visible = @adv && @change > 5 endparam complex param exp4 caption = "Bias Z1" default = (1,0) visible = @th2 && @adv endparam complex param exp5 caption = "Bias Z2" default = (1,0) visible = @th2 && @adv && @change > 0 endparam complex param exp6 caption = "Bias Z3" default = (1,0) visible = @th2 && @adv && @change > 5 endparam complex param tw caption = "Twist 1" default = (0,0) visible = @adv endparam complex param tw2 caption = "Twist 2" default = (0,0) visible = @adv && @change > 0 endparam complex param tw3 caption = "Twist 3" default = (0,0) visible = @adv && @change > 5 endparam complex param tw4 caption = "Twist Z1" default = (0,0) visible = @th2 && @adv endparam complex param tw5 caption = "Twist Z2" default = (0,0) visible = @th2 && @adv && @change > 0 endparam complex param tw6 caption = "Twist Z3" default = (0,0) visible = @th2 && @adv && @change > 5 endparam param op caption = "Operator" enum = "+""-""*""/""^" default = 0 visible = @adv && @change > 5 endparam func nufunc caption = "Morph function 1" default = ident() visible = @adv endfunc func nufunc2 caption = "Morph function 2" default = ident () visible = @adv && @change > 0 endfunc func nufunc3 caption = "Morph function 3" default = ident () visible = @adv && @change > 5 endfunc func nufunc4 caption = "Morph function Z1" default = ident () visible = @th2 && @adv endfunc func nufunc5 caption = "Morph function Z2" default = zero () visible = @th2 && @adv && @change > 0 endfunc func nufunc6 caption = "Morph function Z3" default = zero () visible = @th2 && @adv && @change > 5 endfunc heading caption = "Texture Parameters" visible = (@rnd2 == 0 && @fbmtxt == 0 && @decamt == 0 && @tp == 0 && @gnarl_amt == 0) endheading heading caption = "Texture Parameters [active]" visible = (@rnd2 != 0 || @fbmtxt != 0 || @decamt != 0 || @tp != 0 || @gnarl_amt != 0) endheading param advt caption = "Texture Parameters" default = true endparam float param txamt caption = "Overall Tx Percent" default = 100.0 hint = "Controls the amount of \ Random, fBm, Decimal, Popgnarl and Additional \ texture applied cumulatively." visible = @advt endparam float param rnd2 caption = "Random Tx Amount" default = 0.0 hint = "Adds Random texture" visible = @advt endparam heading caption = "fBm" visible = @advt && @fbmtxt == 0 endheading heading caption = "fBm [active]" visible = @advt && @fbmtxt != 0 endheading param advfbm caption = "fBm Texturing" default = true visible = @advt endparam float param fbmtxt caption = "fBm Tx Amount" default = 0.0 visible = @advt && @advfbm endparam param fbminit caption = "fBm Initialization" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advfbm endparam param ztyp4 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'fBm Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam func fntx8 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'fBm Initialization'" visible = @advt && @advfbm endfunc func fntx9 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'fBm Initialization'" visible = @advt && @advfbm endfunc func fbmrfn1 caption = "fBm Function 1" default = ident() hint = "Try changing this to achieve different fBm \ 'cloud' distribution and look" visible = @advt && @advfbm endfunc func fbmifn1 caption = "fBm Function 2" default = ident() hint = "Try changing this to achieve different fBm \ 'cloud' distribution and look" visible = @advt && @advfbm endfunc func fbmrfn2 caption = "Pattern Function 1" default = floor() hint = "Changing this often radically alters the look of the \ texture. With many functions--if they look 'grainy'--\ you will need to make the value of the 'Frequency' (real) \ param much smaller--on the order of .0000001. Experiment!" visible = @advt && @advfbm endfunc func fbmifn2 caption = "Pattern Function 2" default = floor() hint = "Changing this often radically alters the look of the \ texture. With many functions--if they look 'grainy'--\ you will need to make the value of the 'Frequency' (real) \ param much smaller--on the order of .0000001. Experiment!" visible = @advt && @advfbm endfunc float param ha caption = "Distribution 1" default = 1 visible = @advt && @advfbm endparam float param hb caption = "Distribution 2" default = 1 visible = @advt && @advfbm endparam float param hc caption = "Distribution 3" default = 1 visible = @advt && @advfbm endparam float param hd caption = "Distribution 4" default = 1 visible = @advt && @advfbm endparam complex param txia4 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param txib4 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param txic4 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && @fbminit < 21) endparam complex param exad8 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'fBm Initialization'" visible = @advt && @advfbm endparam complex param exad9 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'fBm Initialization'" visible = @advt && @advfbm && !(@fbminit == 0 ||@fbminit == 5 || @fbminit == 6 ||\ @fbminit == 21) endparam float param fbmscale caption = "fBm Scale" default = 1.0 visible = @advt && @advfbm endparam complex param fbmoffset caption = "fBm Offset" default = (0,0) visible = @advt && @advfbm endparam float param fbmangle caption = "fBm Rotation" default = 0.0 visible = @advt && @advfbm endparam float param fbmstep caption = "fBm Scale Step" default = 0.5 visible = @advt && @advfbm endparam float param fbmastep caption = "fBm Rotation Step" default = 37.0 visible = @advt && @advfbm endparam param fbmoct caption = "fBm Octaves" default = 7 min = 1 visible = @advt && @advfbm endparam float param fbmpower caption = "fBm Exponent" default = 2.0 visible = @advt && @advfbm endparam float param fbm_limit caption = "fBm Limit" default = 0.0 visible = @advt && @advfbm endparam bool param fbm_sgn caption = "Soften Texture" default = true visible = @advt && @advfbm endparam heading caption = "Decimal" visible = @advt && @decamt == 0 endheading heading caption = "Decimal [active]" visible = @advt && @decamt != 0 endheading param advd caption = "Decimal Texturing" default = false visible = @advt endparam float param decamt caption = "Decimal Tx Amount" default = 0.0 visible = @advt && @advd endparam param dec_init caption = "Decimal Initialisation" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advd endparam param ztyp2 caption = "Init z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Decimal Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam func fntx4 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Decimal Initialization'" visible = @advt && @advd endfunc func fntx5 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Decimal Initialization'" visible = @advt && @advd endfunc param dec_type caption = "Decimal Type" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advd endparam func fndec caption = "Type Function" default = atanh () hint = "Active when 'Decimal Type' = 'All Functions'" visible = @advt && @advd && @dec_type == 4 endfunc complex param txia2 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam complex param txib2 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam complex param txic2 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam float param dec_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Decimal Type'" visible = @advt && @advd endparam float param dec_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present) defined in 'Decimal Type'" visible = @advt && @advd && @dec_type > 4 endparam float param dectxt caption = "Decimal Depth" default = 1.0 hint = "Changes the amount and to some extent \ the pattern of the texture." visible = @advt && @advd endparam float param dec_limit caption = "Decimal Limit" default = 2.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advd endparam complex param exad4 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 1st (or only) variable present defined in \ 'Decimal Initialization'" visible = @advt && @advd endparam complex param exad5 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 2nd variable (when present) defined in \ 'Decimal Initialization'" visible = @advt && @advd && !(@dec_init == 0 ||@dec_init == 5 || @dec_init == 6) endparam float param dec_size caption = "Decimal Size" default = 1.0 visible = @advt && @advd endparam param dec_sgn caption = "Apply Decimal Sign?" default = true visible = @advt && @advd endparam heading caption = "Popgnarl" visible = @advt && @gnarl_amt == 0 endheading heading caption = "Popgnarl [active]" visible = @advt && @gnarl_amt != 0 endheading param advpg caption = "Popgnarl Texturing" default = false visible = @advt endparam float param gnarl_amt caption = "Popgnarl Amount" default = 0.0 min = 0.0 visible = @advt && @advpg endparam param gnarl_init caption = "Popgnarl Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advpg endparam param ztyp3 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Popgnarl Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam func fntx6 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg endfunc func fntx7 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg endfunc complex param txia3 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param txib3 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param txic3 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param exad6 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 1st (or only) variable defined in 'Popgnarl Initilaization'" visible = @advt && @advpg endparam complex param exad7 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 2nd variable (when present) defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && !(@gnarl_init == 0 || @gnarl_init == 5 || \ @gnarl_init == 6 || @gnarl_init == 21) endparam param gnarl_type caption = "Popgnarl Mode" enum = "real" "imag" "real+imag" "real*imag" "real-imag" \ "real/imag" "imag/real" "real^imag" "imag^real" \ "1/real" "1/imag" "angle" "magnitude" "arith. mean" \ "geom. mean" visible = @advt && @advpg endparam func fng caption = "Mode Function" default = abs() hint = "Acts on the variables in 'Popgnarl Mode'" visible = @advt && @advpg && @gnarl_type < 11 endfunc param gnarl_scaling caption = "Popgnarl Scaling" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advpg endparam func fngnarl caption = "Scaling Function" default = atanh () visible = @advt && @advpg && @gnarl_scaling == 4 endfunc float param gnarl_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Popgnarl Scaling'" visible = @advt && @advpg endparam float param gnarl_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present)defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @gnarl_scaling > 4 endparam param gnarl_form caption = "Popgnarl Formula" enum = "gnarl" "popcorn" "popsicle" "tannous" "narlog" visible = @advt && @advpg endparam float param gnarl_limit caption = "Popgnarl Limit" default = 1.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advpg endparam float param gnarl_size caption = "Popgnarl Size" default = 1.0 visible = @advt && @advpg endparam int param gnarl_octaves caption = "Popgnarl Octaves" default = 5 min = 1 visible = @advt && @advpg endparam heading caption = "Geometrix" visible = @advt && @trtxt == 0 endheading heading caption = "Geometrix [active]" visible = @advt && @trtxt != 0 endheading param advtr caption = "Geometrix Texturing" default = true visible = @advt endparam float param trtxt caption = "Geometrix Tx Amt" default = 0.0 visible = @advt && @advtr endparam param trinit caption = "Geometrix Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advtr endparam param ztyp5 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Geometrix Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant. 'Dist' needs a high value and may require adjustment \ of the gradient. It tends to produce border and shading effects rather \ than textures per se." visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam func fntx10 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr endfunc func fntx11 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr endfunc complex param trxia caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param trxib caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param trxic caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param exad10 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'Geometrix Initialization'" visible = @advt && @advtr endparam complex param exad11 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'Geometrix Initialization'" visible = @advt && @advtr && !(@trinit == 0 ||@trinit == 5 || @trinit == 6 ||\ @trinit == 21) endparam float param exp caption = "Contrast" default = 0.6 visible = @advt && @advtr hint = "Higher values intensify the contrast between texture sections. If \ you find burned-out areas of texture try lowering this value" endparam float param scc caption = "Density" default = 1.0 hint = "Higher values create finer detail in the texture" visible = @advt && @advtr endparam float param trp1 caption = "Scale" default = 1 visible = @advt && @advtr hint = "Densest texture is at '1'. Try other values and increase the \ 'Density' value to achieve different texture patterns" endparam float param freq caption = "Definition 1" default = 10 visible = @advt && @advtr hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition and/or complexity" endparam float param trp2 caption = "Definition 2" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr endparam float param trp3 caption = "Definition 3" default = .7 hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition" visible = @advt && @advtr endparam float param shad1 caption = "Shading 1" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad2 caption = "Shading 2" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad3 caption = "Shading 3" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad4 caption = "Shading 4" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam func fnzr caption = "Z function 1" default = ident() visible = @advt && @advtr endfunc func fnzi caption = "Z function 2" default = ident() visible = @advt && @advtr endfunc func fn1tx caption = "Real function" default = sqrt() visible = @advt && @advtr endfunc func fn2tx caption = "Imag function" default = ident() visible = @advt && @advtr endfunc func fn3tx caption = "Overall function" default = asin() visible = @advt && @advtr endfunc float param geo_limit caption = "Geometrix Limit" default = 0.0 hint = "Low values limit texture contrast. Zero is 'off'" visible = @advt && @advtr endparam bool param geo_sgn caption = "Soften Texture" default = false visible = @advt && @advtr endparam heading caption = "Additional Texture" visible = @advt && @tp == 0 endheading heading caption = "Additional Texture [active]" visible = @advt && @tp != 0 endheading param advatx caption = "Additional Texturing" default = false visible = @advt endparam float param tp caption = "Add'l Tx Amount" hint = "'Blends' in texture" default = 0.0 visible = @advt && @advatx endparam param tt caption = "Add'l Tx Initialization" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advatx endparam param ztyp caption = "Choose z type" enum = "#z""Morph z""Trap z""Trap #z""Dist" default = 2 hint = "Determines which kind of 'z' variable is used in \ 'Add'l Tx Initialization' (when z is present). Textures created \ with 'Trap z' conform to the element shapes and change with changes \ in the Morph values, 'Trap #z' textures conform to the element shapes \ but do change. 'Morph z' textures do not conform to element shapes and \ change with Morph values and '#z' textures do not conform and remain \ invariant, as do 'Dist' textures." visible = @advt && @advatx && (@tt < 5 || @tt > 14) endparam func fntx1 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Add'l Tx Initialization'" visible = @advt && @advatx endfunc func fntx2 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in\ 'Add'l Tx Initialization'" visible = @advt && @advatx endfunc func fntx3 caption = "Add'l Tx Function" default = trunc() visible = @advt && @advatx endfunc complex param txia1 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advatx && (@tt < 5 || @tt > 14) endparam complex param txib1 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advatx && (@tt < 5 || @tt > 14) endparam complex param txic1 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advatx && (@tt < 5 || @tt > 14) endparam complex param exad1 caption = "Frequency 1" default = (1.0,0.0) hint = "Determines the frequency of the pattern by acting on \ the 1st (or only) variable defined by 'Add'l Tx Initialization'" visible = @advt && @advatx endparam complex param exad2 caption = "Frequency 2" default = (1.0,0.0) hint = "Determines the frequency of the pattern by acting on \ the 2nd variable (when present) defined by 'Add'l Tx Initialization'" visible = @advt && @advatx && !(@tt == 0 ||@tt == 5 || @tt == 6) endparam float param tv caption = "Scale 1" hint = "This and the next parameter work together \ to determine the scale of the texture" default = 10.0 visible = @advt && @advatx endparam float param ts caption = "Scale 2" default = 2.0 visible = @advt && @advatx endparam float param tc caption = "Density" hint = "Works similarly to 'Color Density'. Positive \ numbers use division. Negative numbers use modulus, \ producing a slightly different effect." default = 5.0 visible = @advt && @advatx endparam float param r caption = "Randomness" default = 0.0 visible = @advt && @advatx endparam bool param add_sgn caption = "Soften Texture" default = true visible = @advt && @advatx endparam } ThinOrbitTrapsII-Sam+tma (BOTH) { ; By Samuel Monnier, mods by Toby Marshall (ver 2.7, 16 Apr. 2008) ; ; new in 1.7: texture functionality extended--check hint and ; additional choices in the "Choose z type" texture params. ; ; new in 1.8: added a "Geometrix" texture based on code ; by Dennis Magar ; ; new in 1.81: optimized the Morph code and added a few ; enhancements to the fBm, Geometrix and Additional textures. ; ; new in 2.0: many new parameters and functions added under ; "Extra Shaping Parameters" to change the shapes and more ; importantly the appearance of the elements. Some of the ; "Super Shaper" params (#s2-4) have been renamed as, ; repsectively, "X Strength", "X Power", "Y Strength and ; "Y Power" for consistency. New "Color By" coloring modes ; have been added including a corrected Angle mode, Magnitude, ; Real and Imaginary, with some parameters and a function to ; vary them. ; ; new in 2.1: added some bells and whistles to the fBm texture ; section--check the hints... ; ; new in 2.3: added "limited iterations". Many thanks to ; Damien M. Jones for allowing me to use this code of his. ; ; new in 2.4: added pattern repeat param to limited iter code, ; adapted from Ron Barnett. ; ; new in 2.6: rationalized and standardized limited iter code. ; ; new in 2.7: added a "Fission" param, renamed "Closest Ppwer 1" ; to "Closest Power" and "Closest Power 2" to "Edge Definition". ; In addition, I found "Closest Power" to be redundant and therefore ; dropped it from this version. ; ; This is basically Samuel's "Thin Orbit Traps" with a lot of ; new trap shapes and added bells and whistles which I hope ; will act as enhancements to his original work. Here are some ; notes and tips: ; ; TRAP SHAPES: Included are all the trap shapes from Ken ; Childress' "Plane Curve Traps" (kcc3.ucl), many of which ; were adapted from the original "Thin Orbit Traps", as ; well as all the traps shapes from "Plane Curve Traps II" ; (tma.ucl). They contain all the modifying parameters and ; functions from those colorings, which can be accessed under ; "Trap Parameters". ; ; MODES: Samuel's original three modes have been retained. ; I've added a number of parameters specific to each mode, ; which appear under the heading "Mode Options" when the ; appropriate mode is selected. ; ; COLORINGS: I've added the possibility to color according ; to iteration, modulated iteration and angle. With ; modulated iter you can enter decimal values (as opposed to ; integers only). This retains the modulation but also creates ; a color phase shift across the elements--sort of a cross between ; modulated and normal iterated modes. You will also find a parameter ; to vary how much of the gradient is used in this process. ; It is called "Range Depth" and can be found under the heading ; "Coloring Parameters" when the "Modulated Iter" mode is active. ; ; GLOBAL PARAMETERS: These affect the image in all modes ; and colorings. ; ; ANGLE PARAMETERS: A number of things in here allow you ; to change the shading and visualization of elements ; when in the "Angle" Coloring (and visible only then). ; ; MASKING: There is a distance mask and also an "Extra Angle" ; mask that masks for angle values instead of distance, which ; should be used with the "Angle" coloring. This can be used ; concurrently with the normal mask if desired.This mask is ; extremely sensitive to mode changes, and the effective mask ; value may vary widely depending on the mode and trap chosen. ; ; EXTRA SHAPING PARAMETERS: Yet more parameters to change the ; trap shapes and behavior. These are hidden by default to ; make navigation on the tab easier. ; ; MORPH: I've included the code I stumbled across that ; changes the basic value of #Z, thereby changing the ; shape of the traps in (hopefully) interesting ways. ; Included in this version are the original Morph ; parameters and "Morph II" parameters. ; ; When "Morph II" is activated by default only ; "Morph function Z1" is active; you must set ; "Morph function Z2" & 3 to some function other than ; "zero" to activate them when they appear as the ; appropriate Morph choice is selected. ; ; When "Morph II" is active there is also the possibility ; of choosing the variable type for Z1-3 in any of the ; three positions where that secondary Z expression appears, ; via the "Z1(2,3)Type" parameters. ; ; TEXTURES: The texture parameters here are essentially ; taken straight from Michèle Dessureault' work, with a ; few added params. The "Additional" texture params are ; adapted from Dennis Magar. Note that the five different ; types of textures can be implemented simultaneously. ; ; When choosing texture initializations that inclue the ; variable "z" you have three choices, "#z", "Morph z" ; and "Trap z". Textures made with #z will not change ; when changes are made to parameter values. Using ; "Morph z" will change the textures when the morph ; params are changed, and using "Trap z" will change ; the textures both when morph params and some global ; params are changed. ; ; MISCELLANEOUS TIPS: (Just some things I have observed) ; ; "Iteration" and "Modulated Iter" colorings follow the ; trap shapes in "Closest" mode and the formula-produced ; iterations in "Sum". So the trap shapes in "Sum" can be ; colored by overlaying an identical layer of "Closest" ; with the desired coloring. ; ; Try altering the values of X and Y Exponent to change the ; width of the trapped elements. Sometimes this makes them ; appear more "Thingamajigs"-like. ; ; Using the "ceil" enumeration of the "Closest Function" ; will give a good and clean visualization of the current ; trap shape, iterated according to the formula. ; ; Many parameters and functions which seem either overly ; redundant or similar to others may "come to life" ; when other parameters and/or functions are changed. ; ; DISCLAIMER: While I know that this coloring includes ; a mind-numbing array of possibilities I believe it ; is possible to achieve interesting results using a ; minimal number of options. Wade into the parameter ; jungle at your own risk ;-) ; ; My thanks to Samuel for allowing me to tweak his ; work and distribute the result, to Ken Childress ; for letting me include his trap shape code and for ; his always good advice, as well as to Keith ; Mackay for inspiration and suggestions. On the ; texture front I must thank Michèle Dessureault and ; Dennis Magar first and foremost for their kind ; acquiescence in allowing me to lift their texturing ; code bodily and suture it in this coloring. Many ; thanks also to Damien M. Jones for allowing me to ; use his fBm texturing and to Andreas Lober for his ; permission to include his "Popgnarl" textures. ; init: float d = 0 if @mode == 1 || @mode == 2 d = 1e20 endif int i = 0 int ist = 0 complex dist = (0,0) float dist2 = 0 float min_dist = 1e20 complex z = (0,0) float t2 = 0 float tx = abs(@tp) float txx = 0 float a2 = 0 complex tz = (0,0) float ct = abs(@tc*1000) float tmp = 0 float rn = real(#random) float texture=0.0 p=(0.0,0.0) pfb = (0.0,0.0) float x = 0 float y = 0 float xx =0 float yy =0 float ddd = 0 float texture_rnd = 0.0 float texture_dec = 0.0 float texture_fbm = 0.0 float texture_gna = 0.0 float pd = 0.0 complex z2 = (0,0) complex z3 = (0,0) complex z4 = (0,0) complex trap_z = (0,0) complex trap2_z = (0,0) int trap_iter = 0 float texture_tr = 0 complex ptr = (0,0) float frfr = 0 float fifi = 0 float zzzz = 0 float r0r0 = 0 float i0i0 = 0 float r1r1 = 0 float i1i1 = 0 float azaz = 0 float bzbz = 0 float czcz = 0 float dzdz = 0 float zaza = 0 float avav = 1 float xbxb = 1 complex z_values[#maxiter+1] complex z1p = (0,0) complex z1q = (0,0) complex qw = (0,0) complex er = (0,0) complex ty = (0,0) float za = 0 complex nuvar = (0,0) bool trapped = false bool trapping = false float fiter = 0 float patnum = 0 loop: complex z1 = #z if @th2 == false qw = @nufunc(z1-@tw)^@exp3 er = @nufunc2((z1-@tw2)^@exp1) ty = @nufunc3((z1-@tw3)^@exp2) if @change == "1" z1 = @nufunc(z1-@tw)^@exp1 elseif @change == "2" z1 = qw+er elseif @change == "3" z1 = qw-er elseif @change == "4" z1 = qw*er elseif @change == "5" z1 = qw/er elseif @change == "6" z1 = qw^er elseif @change == "7" if @op == "+" z1 = qw+(er+ty) elseif @op == "-" z1 = qw+(er-ty) elseif @op == "*" z1 = qw+(er*ty) elseif @op == "/" z1 = qw+(er/ty) elseif @op == "^" z1 = qw+(er^ty) endif elseif @change == "8" if @op == "+" z1 = qw-(er+ty) elseif @op == "-" z1 = qw-(er-ty) elseif @op == "*" z1 = qw-(er*ty) elseif @op == "/" z1 = qw-(er/ty) elseif @op == "^" z1 = qw-(er^ty) endif elseif @change == "9" if @op == "+" z1 = qw*(er+ty) elseif @op == "-" z1 = qw*(er-ty) elseif @op == "*" z1 = qw*(er*ty) elseif @op == "/" z1 = qw*(er/ty) elseif @op == "^" z1 = qw*(er^ty) endif elseif @change == "10" if @op == "+" z1 = qw/(er+ty) elseif @op == "-" z1 = qw/(er-ty) elseif @op == "*" z1 = qw/(er*ty) elseif @op == "/" z1 = qw/(er/ty) elseif @op == "^" z1 = qw/(er^ty) endif elseif @change == "11" if @op == "+" z1 = qw^(er+ty) elseif @op == "-" z1 = qw^(er-ty) elseif @op == "*" z1 = qw^(er*ty) elseif @op == "/" z1 = qw^(er/ty) elseif @op == "^" z1 = qw^(er^ty) endif endif else if @zchange1 == "|z|" z2 = |z1| elseif @zchange1 == "atan2(z)" z2 = atan2(z1) elseif @zchange1 == "real(z)" z2 = real(z1) elseif @zchange1 == "imag(z)" z2 = imag(z1) endif if @zchange2 == "|z|" z3 = |z1| elseif @zchange2 == "atan2(z)" z3 = atan2(z1) elseif @zchange2 == "real(z)" z3 = real(z1) elseif @zchange2 == "imag(z)" z3 = imag(z1) endif if @zchange3 == "|z|" z4 = |z1| elseif @zchange3 == "atan2(z)" z4 = atan2(z1) elseif @zchange3 == "real(z)" z4 = real(z1) elseif @zchange3 == "imag(z)" z4 = imag(z1) endif aa = @nufunc((z1-@tw)+@nufunc4(z2-@tw4)^@exp4) bb = @nufunc((z1-@tw)-@nufunc4(z2-@tw4)^@exp4) cc = @nufunc4((z2-@tw4)^@exp4-@nufunc(z1-@tw)) ff = real((z3-@tw5)^@exp5) dd = @nufunc5(ff) jj = (z4-@tw6) kk = (z1-@tw2) oo = (z1-@tw3) gg = @nufunc2(kk) hh = @nufunc6(jj)^@exp6 pp = @nufunc3(oo) if @mmode == "z+|z|" nuvar = aa elseif @mmode == "z-|z|" nuvar = bb elseif @mmode == "|z|-z" nuvar = cc endif if @change == "1" z1 = nuvar^@exp1 elseif @change == "2" if @mmode2 == "z+|z|" z1 = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif elseif @change == "3" if @mmode2 == "z+|z|" z1 = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif elseif @change == "4" if @mmode2 == "z+|z|" z1 = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif elseif @change == "5" if @mmode2 == "z+|z|" z1 = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif elseif @change == "6" if @mmode2 == "z+|z|" z1 = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif elseif @change == "7" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "8" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "9" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "10" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "11" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif endif endif z_values[i] = #z i = i + 1 if i > @skip1 && i <= @skip2 if @version < 2.6 if @reverse if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif patnum = patnum + 1 else ; new version if @reverse == false if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (!trapping); we are not currently trapping trapping = true; so start if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we are currently trapping trapping = false; so stop fiter = fiter + @trapiter; do this many iterations endif endwhile endif else if (@trapalliterations == true) fiter = fiter - 1; one less to go before we trap while (fiter < 0.0); iterations all used up if (trapping); we are currently trapping trapping = false; so stop if (patnum < @pattern * (@trapskip + @trapiter))|| patnum == 0 ; execute skip code under these conditions fiter = fiter + @trapskip; skip this many iterations endif else; we aren't currently trapping trapping = true; so start fiter = fiter + @trapiter; do this many iterations endif endwhile endif endif if @pattern != 0 patnum = patnum + 1 endif endif if (@trapalliterations == false || trapping) ; if we're checking for traps... if @pshape == "normal" z = ((@fnx(z1^@a))-@c)*exp(1i*pi/180*@rot)/@size elseif @pshape == "acosh" z = ((@fnx(z1^@a))-@c)*acosh(1i*pi/180*@rot)/@size elseif @pshape == "acos" z = ((@fnx(z1^@a))-@c)*acos(1i*pi/180*@rot)/@size endif float x = sqrt(@rat)*real(@fnxx((z-@p0)*@p1)^@p2) float y = 1/sqrt(@rat)*imag(@fnyy((z-@q0)*@q1)^@q2) x = real(@fncx(x+@ppx)^@expx) y = real(@fncy(y+@ppy)^@expy) if @trapType == "Alien Waves" dist = @fn1(@fn2(((y*@shapeAdjust1)/@fn5(x*@shapeAdjust4))\ ^@fn4(y^@shapeAdjust2)-@fn6(x^@shapeAdjust5)-@fn3(y+(1-@shapeAdjust3))))\ -@distort elseif @trapType == "Bad Hair Day" dist = @fn1(@fn2((y*@shapeAdjust1)^@fn5(y^@shapeAdjust2)* \ @fn3(y*@shapeAdjust3))+@fn4(x+(1-@shapeAdjust4)))-@distort elseif @trapType == "Barbed Wire" dist = @fn1(abs(@fn2(x^@shapeAdjust4*@shapeAdjust1))+ \ abs(@fn3((y*@shapeAdjust3)^@fn4(y*@shapeAdjust2)))-1)- @distort elseif @trapType == "Baubles & Bangles" dist = @fn1((@fn2(x^(2*@shapeAdjust1)-1))^2+@fn3(y^2+(1-@shapeAdjust2))* \ @fn4(y^(.2*@shapeAdjust3)-1)*@fn5(y*@shapeAdjust4-2)* \ @fn6(y+(3-@shapeAdjust5)))-@distort elseif @trapType == "Bighorn Curve" dist = @fn1(@fn2(x^2*@shapeAdjust1)+(@fn3(y^2*@shapeAdjust2)* \ @fn4(y^2+(1-@shapeAdjust6)))*@fn5(y^(5-@shapeAdjust7))/ \ @fn6(x^(2*@shapeAdjust3))*@fn7(x^2*@shapeAdjust4-@fn8 \ (y^@shapeAdjust5)))-@distort elseif @trapType == "Binary Curve" dist = @fn1((@fn2(x^(3-@shapeAdjust5))-@shapeAdjust1)/@fn3 \ (x^2-2*@shapeAdjust3)^2+ @fn4(y^(2-@shapeAdjust4)-@shapeAdjust2^2)^2)\ -@distort elseif @trapType == "Bird of Paradise" dist = @fn1(atan(@fn4((x*@shapeAdjust1)*@fn3(y^@shapeAdjust3)))- \ @fn2(y*@shapeAdjust2))-@distort elseif @trapType == "Cabuchon Curve" dist = @fn1(@fn2(x^(@shapeAdjust3)))-@fn3(y^(2*@shapeAdjust4))/ \ @shapeAdjust1^2-@fn4((x^(2*@shapeAdjust7)) \ +@fn6(y^2+(1-@shapeAdjust6)))/@shapeAdjust2^2-@fn5(x*@shapeAdjust5)\ -@distort elseif @trapType == "Cardinal Points Curve" dist = @fn1(@fn2(x^4+(1-@shapeAdjust2))-@fn3(y^(3+@shapeAdjust3))-2* \ @fn4(abs(x^(3-@shapeAdjust4))-@fn5(y^2*@shapeAdjust1)))-@distort elseif @trapType == "Chaos Adorned" dist = @fn1(@fn2((y*@shapeAdjust1)^@fn6(y^@shapeAdjust2)* \ @fn3(y*@shapeAdjust3))+@fn4(x+(1-@shapeAdjust4))^ \ @fn5(y^(2*@shapeAdjust5)))-@distort elseif @trapType == "Chaos Unleashed" dist = @fn1(@shapeAdjust1^4*@fn2((y^@shapeAdjust3)^@fn5(y*@shapeAdjust4))- \ @shapeAdjust2^2*@fn3((x^@shapeAdjust5)^@fn6(x+(1-@shapeAdjust6)))* \ (2*@shapeAdjust1-@fn4(x^@shapeAdjust7)))-@distort elseif @trapType == "Church Key Curve" dist = @fn1(@fn2((x*@shapeAdjust4)^@shapeAdjust1))+ \ @fn3(y*2.4*@shapeAdjust2)^@fn4(y-(1-@shapeAdjust3))-@distort elseif @trapType == "Compass Curve" dist = @fn1((@fn2(x^2*@shapeAdjust1))*(@fn3(x^2*@shapeAdjust3)+ \ @fn4(y^2*@shapeAdjust4))-@shapeAdjust2^2* \ @fn5(x^(2*@shapeAdjust5)))-@distort elseif @trapType == "Conductor's Curve" dist = @fn1(@fn2(x^2*@shapeAdjust1)-(@fn3((x*.2*@shapeAdjust6)* \ @fn9(y*@shapeAdjust2))-@fn4(y^2+(1-@shapeAdjust7)))* \ @fn5(y^(4*@shapeAdjust3))-@fn6(x^(2*@shapeAdjust8))/\ @fn7(x^(2*@shapeAdjust4)-@fn8(y^(.5*@shapeAdjust5))))-@distort elseif @trapType == "Conjoined Circle Curve" dist = @fn1((@fn2(x^(2*@shapeAdjust2))+@fn3(y^(2*@shapeAdjust3)))*\ (@fn4(y^@shapeAdjust4)/@fn5(y^@shapeAdjust5))-@shapeAdjust1- \ abs(@fn6(y^@shapeAdjust6)))-@distort elseif @trapType == "Cooking Pot Curve" dist = @fn1(@fn2(y^2*@shapeAdjust2)-(@shapeAdjust1^2- \ @fn3(x^2*@shapeAdjust3)))-(@fn4(x^(2*(@shapeAdjust5)))+2* \ @shapeAdjust4*@fn5(y^(2*@shapeAdjust6))-@shapeAdjust1^2)^2- \ @distort elseif @trapType == "Cosmic Rays" dist = @fn1(@fn2(x^(2*@shapeAdjust1))*@fn3(y^(2*@shapeAdjust3))+ \ @fn4(y-@shapeAdjust4)/@fn5(y^(3*@shapeAdjust2)))-@distort elseif @trapType == "Crochet Hooks" dist = @fn1(@fn2(y^3*@shapeAdjust1)+(@fn3((x+(1-@shapeAdjust2))^ \ @fn5(y^@shapeAdjust3)/@fn4((x*@shapeAdjust4)^@ShapeAdjust5))))- \ @distort elseif @trapType == "Crosshatch Curve" dist = @fn1(@fn2((y*@shapeAdjust1)^@fn4(y^@shapeAdjust2)* \ @fn3(y+(1-@shapeAdjust3))))-@distort elseif @trapType == "D&U Curve" dist = @fn1(@fn2(x^(2*@shapeAdjust1))+@fn3((y^(2*@shapeAdjust4))^ \ @fn4(y*@shapeAdjust2))-@shapeAdjust3)-@distort elseif @trapType == "Dogleg Curve" dist = @fn1(atan(@fn4((x*@shapeAdjust1)+@fn3(y^@shapeAdjust4)* \ @shapeAdjust2))-@fn2(y^@shapeAdjust3))-@distort elseif @trapType == "Double Circle Curve" dist = @fn1((@fn2(x^2*@shapeAdjust2)+@fn3(y^2*@shapeAdjust3))*\ (@fn4(y^@shapeAdjust4)/@fn5(y^@shapeAdjust5))-@shapeAdjust1* \ abs(@fn6(y^@shapeAdjust6)))-@distort elseif @trapType == "Double Trine" dist = @fn1(atan(@fn4((x*@shapeAdjust1)*@fn3(y^@shapeAdjust3)))- \ @fn2(y*@shapeAdjust2)/@fn5(x^@shapeAdjust4))-@distort elseif @trapType == "Dribs & Drabs" dist = @fn1((@fn2(x^@shapeAdjust2)+@fn3(y^(2+@shapeAdjust3))^ \ @fn6(y^@shapeAdjust6)-4*@fn4(x^(3*@shapeAdjust4))* \ @fn5(y^(2*@shapeAdjust5))*@shapeAdjust1^2))-@distort elseif @trapType == "Driftwood Curve" dist = @fn1(((@fn2(x^@shapeAdjust3)-.5*@shapeAdjust10)^2+ \ @fn3(y^2+(1-@shapeAdjust4)))*(@fn4(y+(1-@shapeAdjust5))* \ (@fn5(x-(@shapeAdjust6-1))-@shapeAdjust11)+ \ @fn6(y^(1+@shapeAdjust7)))+4*@shapeAdjust1* \ (abs(@fn7(x+(@shapeAdjust8-1))-1.5*@shapeAdjust2))* \ @fn8(x^(2*@shapeAdjust9)))-@distort elseif @trapType == "Dulcimer Curve" dist = @fn1((@fn2(x^2*@shapeAdjust2)+@fn3(y^2*@shapeAdjust3))*\ (@fn4(y^@shapeAdjust4)*@fn5(y^@shapeAdjust5))-@shapeAdjust1* \ abs(@fn6(y^@shapeAdjust6)))-@distort elseif @trapType == "Eye of the Needle" dist = @fn1((@fn2(y^(2*@shapeAdjust7))-@fn3(x^2+(1-@shapeAdjust8)))* \ @fn4((x^@shapeAdjust9)-@fn9(y*@shapeAdjust4))* \ (@shapeAdjust1*@fn5(x*@shapeAdjust10)-@shapeAdjust2)-4* \ (@fn6(x^2*@shapeAdjust6)+@fn7(y^2*@shapeAdjust3)-2*@fn8 \ (x^@shapeAdjust5))^2*@shapeAdjust1)-@distort elseif @trapType == "Exclamation Point" dist = @fn1(@fn2(x^(2*@shapeAdjust1))/@fn3(y^(2*@shapeAdjust3))+ \ @fn4(y-@shapeAdjust4)*@fn5(y^(3*@shapeAdjust2)))-@distort elseif @trapType == "Fatback" dist = @fn1(@fn2(x^(2*@shapeAdjust1))/@fn3(y^(2*@shapeAdjust3))+ \ @fn4(y-@shapeAdjust4)/@fn5(y^(3*@shapeAdjust2)))-@distort elseif @trapType == "Floreate Curve" dist = @fn1(@fn2(x^2*@shapeAdjust1)+@fn3((y*@shapeAdjust4)^ \ @fn4(y*@shapeAdjust2))-@shapeAdjust3)-@distort elseif @trapType == "Glyph Curve" dist = @fn1(((@fn2(x*@shapeAdjust3)-@shapeAdjust2)^2- \ @fn3(y^2*@shapeAdjust4))*(@fn4(x+(1-@shapeAdjust5))* \ (@fn5(x-(@shapeAdjust6-1))-@shapeAdjust2)+ \ @fn6(y^(1+@shapeAdjust7)))-4*@shapeAdjust1* \ (abs(@fn7(x+(@shapeAdjust8-1))-@shapeAdjust2))* \ @fn8(x^(2*@shapeAdjust9)))-@distort elseif @trapType == "Gravity Waves" dist = @fn1(atan(@fn4((x^(2*@shapeAdjust1))+@fn3(y^@shapeAdjust4)* \ 2*@shapeAdjust2))-@fn2(y^@shapeAdjust3))-@distort elseif @trapType == "Harpoon Curve" dist = @fn1(@fn2(x^(2*@shapeAdjust3)))*@fn3(y^2*@shapeAdjust4)+ \ @shapeAdjust1^2-@fn4((x*@shapeAdjust7)^@fn6(y*@shapeAdjust6))- \ @shapeAdjust2^2-@fn5(x^@shapeAdjust5)-@distort elseif @trapType == "Hook & Spar" dist = @fn1(@fn2(y^@shapeAdjust1))-@fn3(y*@shapeAdjust2)^ \ @fn4(x^@shapeAdjust3)-@distort elseif @trapType == "Hoops & Plates" dist = @fn1((@fn2((x+(1-@shapeAdjust4))^@fn5(x+(1-@shapeAdjust4)))+ \ @fn3(y^2*@shapeAdjust2)+@shapeAdjust1)^2-4*@shapeAdjust1^2* \ @fn4(x^@shapeAdjust3)-1)-@distort elseif @trapType == "Horned Torus Curve" dist = @fn1(@fn2(y^2*@shapeAdjust1)-(@fn3(x^2*@shapeAdjust2)+ \ @fn4(y^2+(1-@shapeAdjust6)))*@fn5(x^(4*@shapeAdjust7))/ \ @fn6(x^(3-@shapeAdjust3))/@fn7(x^2*@shapeAdjust4/@fn8 \ (y^@shapeAdjust5)))-@distort elseif @trapType == "Indented Parabola" dist = @fn1(@fn2(y^@shapeAdjust1))+@fn3(x*.2*@shapeAdjust2)- \ @fn4(y^(2*@shapeAdjust3))-@distort elseif @trapType == "Intersecting Ovals" dist = @fn1(@fn2(x^(2*@shapeAdjust2))-(.4*@shapeAdjust1^2* \ @fn3(x^2*@shapeAdjust3)))-(@fn4(x^(2*@shapeAdjust5))+2* \ @shapeAdjust4*@fn5(y^(2*@shapeAdjust6))-.5*@shapeAdjust1^2)^2- \ @distort elseif @trapType == "Leaves of Grass" dist = @fn1(@fn2(y^@shapeAdjust1))-@fn3(x*@shapeAdjust2)^ \ @fn4(y^@shapeAdjust3)-@distort elseif @trapType == "Lipped Ovals" dist = @fn1(abs(@fn2(x^2*@shapeAdjust3*@shapeAdjust1))+ \ abs(@fn3(y^@shapeAdjust2))-1)-@distort elseif @trapType == "M Curve" dist = @fn1(@fn2(y^@shapeAdjust1))+@fn3(@shapeAdjust4*x^(3*@shapeAdjust2))-\ @fn4(y^(2*@shapeAdjust3))-@distort elseif @trapType == "Mercury Curve" dist = @fn1(((@fn2(x*@shapeAdjust3)-@shapeAdjust2)^2+ \ @fn3(y^2*@shapeAdjust4))*(@fn4(x+(1-@shapeAdjust5))* \ (@fn5(x-(@shapeAdjust6-1))-@shapeAdjust2)+ \ @fn6(y^(1+@shapeAdjust7)))-4*@shapeAdjust1* \ (abs(@fn7(x+(@shapeAdjust8-1))-@shapeAdjust2))* \ @fn8(x^(2*@shapeAdjust9)))-@distort elseif @trapType == "Miscellanea" dist = @fn1((@fn2(y^(2*@shapeAdjust7))-@fn3(x^2+(1-@shapeAdjust8)))* \ @fn4((x^@shapeAdjust9)-@fn9(y*@shapeAdjust4))* \ (@shapeAdjust1*@fn5((y*@shapeAdjust10)^(@fn10(x^@shapeAdjust11))) \ -@shapeAdjust2)+4* (@fn6(x^2*@shapeAdjust6)+@fn7(y^2*@shapeAdjust3)\ +2*@fn8(y^@shapeAdjust5))^2*@shapeAdjust1)-@distort elseif @trapType == "Moorish Fantasy" dist = @fn1(@fn2((x*@shapeAdjust4)^@shapeAdjust1))- \ @fn3(y*@shapeAdjust2)^@fn4(y-(1-@shapeAdjust3))-@distort elseif @trapType == "Mousehead Curve" dist = @fn1(((@fn2(x^@shapeAdjust3)-@shapeAdjust2)^2+ \ @fn3(y^2+(1-@shapeAdjust4)))*(@fn4(x+(1-@shapeAdjust5))* \ (@fn5(x-(@shapeAdjust6-1))-@shapeAdjust2)+ \ @fn6(y^(1+@shapeAdjust7)))-4*@shapeAdjust1* \ (abs(@fn7(x+(@shapeAdjust8-1))-@shapeAdjust2))* \ @fn8(y^(2*@shapeAdjust9)))-@distort elseif @trapType == "Tsuba curve" dist = @fn1(@fn2(y^(2*@shapeAdjust2))-(.4*@shapeAdjust1^2* \ @fn3(x^2*@shapeAdjust3)))-(@fn4(x^(2*@shapeAdjust5))+2* \ @shapeAdjust4*@fn5(y^(2*@shapeAdjust6))-.5*@shapeAdjust1^2)^2- \ @distort elseif @trapType == "Nested Ovals" dist = @fn1(@fn2(y^2*@shapeAdjust2)*(@shapeAdjust1^2- \ @fn3(x^2*@shapeAdjust3)))-(@fn4(x^(2*@shapeAdjust5))+2* \ @shapeAdjust4*@fn5(y^(2*@shapeAdjust6))-@shapeAdjust1^2)^2- \ @distort elseif @trapType == "Nesting Birds Curve" dist = @fn1(@fn2(x^2*@shapeAdjust1)-(@fn3((.2*y*@shapeAdjust6)^ \ @fn9(y*@shapeAdjust2))*@fn4(y^2+(1-@shapeAdjust7)))* \ @fn5(y^(4*@shapeAdjust3))/@fn6(x^(2*@shapeAdjust8))* \ @fn7(x^2*(3*@shapeAdjust4)-@fn8(.5*y^@shapeAdjust5)))-@distort elseif @trapType == "O-nami Curve" dist = @fn1(@fn2((y*@shapeAdjust1)^@fn6(y^@shapeAdjust2)* \ @fn3(y*@shapeAdjust3))+@fn4(x+(1-@shapeAdjust4))/ \ @fn5(y^(2*@shapeAdjust5)))-@distort elseif @trapType == "Odds 'n Ends" dist = @fn1((@fn2(y^(2*@shapeAdjust7))-@fn3(x^2+(1-@shapeAdjust8)))* \ @fn4((x^@shapeAdjust9)-@fn9(y*@shapeAdjust4))* \ (@shapeAdjust1*@fn5(x*@shapeAdjust10)-@shapeAdjust2)-4* \ (@fn6(x^2*@shapeAdjust6)+@fn7(y^2*@shapeAdjust3)-2-@fn8 \ (x^@shapeAdjust5))^2*@shapeAdjust1)-@distort elseif @trapType == "Omega Curve" dist = @fn1(atan(@fn4((x^(2*@shapeAdjust1))/@fn3(y^(2*@shapeAdjust4))/ \ @shapeAdjust2))+@fn2(x^@shapeAdjust3))-@distort elseif @trapType == "Ornate Curve" dist = @fn1((@fn2(y^(2*@shapeAdjust7))/@fn3(x^2+(1-@shapeAdjust8)))* \ @fn4((x^@shapeAdjust9)-@fn9(y*@shapeAdjust4))* \ (@shapeAdjust1-@fn5(x*@shapeAdjust10)-@shapeAdjust2)-4* \ (@fn6(x^2*@shapeAdjust6)+@fn7(y^2*@shapeAdjust3)-2*@fn8 \ (x^@shapeAdjust5))^2*@shapeAdjust1)-@distort elseif @trapType == "Ovals" dist = @fn1(@fn2(x*@shapeAdjust2-@fn6(y*@shapeAdjust4))- \ @fn3(x^2*@shapeAdjust3+@fn4(y^(2*@shapeAdjust5)))-2* \ @shapeAdjust1*@fn5(y^(2*@shapeAdjust6)))-@distort elseif @trapType == "Ovate Waves" dist = @fn1(@fn2(y^4*@shapeAdjust3)-@shapeAdjust1^2* \ @fn3(y^2*@shapeAdjust4)-@fn4((y*@shapeAdjust7)^ \ @fn6(y^@shapeAdjust5))+@shapeAdjust2^2* \ @fn5(x^(2*@shapeAdjust6)))-@distort elseif @trapType == "Ovate Waves 2" dist = @fn1(@fn2(y^4*@shapeAdjust3)-@shapeAdjust1^2* \ @fn3(y^2*@shapeAdjust4)-@fn4((x*@shapeAdjust7)^ \ @fn6(x^@shapeAdjust5))+@shapeAdjust2^2* \ @fn5(x^(2*@shapeAdjust6)))-@distort elseif @trapType == "Pacifier Curve" dist = @fn1(@fn2(x^2*@shapeAdjust1)-(@fn3((x*.2*@shapeAdjust6)* \ @fn9(y*@shapeAdjust2))-@fn4(y^2+(1-@shapeAdjust7)))* \ @fn5(y^(4*@shapeAdjust3))-@fn6(x^(2*@shapeAdjust8))/\ @fn7(x^(2*@shapeAdjust4)/@fn8(y^(.5*@shapeAdjust5))))-@distort elseif @trapType == "Parenthetical Curve" dist = @fn1((@fn2(x^2*@shapeAdjust2)+@fn3(y^2*@shapeAdjust3))-atan \ (@fn4(y^@shapeAdjust4)/@fn5(y^@shapeAdjust5))+@shapeAdjust1* \ abs(@fn6(y+(1-@shapeAdjust6))))-@distort elseif @trapType == "Pincers" dist = @fn1(@fn2(x^2*@shapeAdjust1)/@fn3(y^(1+@shapeAdjust3))+ \ @fn4((y^@shapeAdjust4)^@fn6(y*@shapeAdjust2))/ \ @fn5(y^2+(1-@shapeAdjust5)))-@distort elseif @trapType == "Pisces Curve" dist = @fn1((@fn2(x^(2*@shapeAdjust1))-1)^2-@fn3(.6*y^2+(1-@shapeAdjust2))* \ @fn4(y^@shapeAdjust3-1)*@fn5(y*@shapeAdjust4-1)* \ @fn6(3*y+(6-@shapeAdjust5)))-@distort elseif @trapType == "Plane & Tail" dist = @fn1(@shapeAdjust1^4/@fn2((x^(2*@shapeAdjust3))+@fn5(y^@shapeAdjust4))*\ @shapeAdjust2^2-@fn3((x^(2*@shapeAdjust5))^@fn6(x+(1-@shapeAdjust6)))/\ (2*@shapeAdjust1/@fn4(y^@shapeAdjust7)))-@distort elseif @trapType == "Plane & Tail 2" dist = @fn1(@shapeAdjust1^4/@fn2((x^(2*@shapeAdjust3))+@fn5(y^@shapeAdjust4))\ *@shapeAdjust2^2-@fn3((x^(2*@shapeAdjust5))^ \ @fn6(x+(1-@shapeAdjust6)))/(2*@shapeAdjust1-@fn4(y^@shapeAdjust7)))\ -@distort elseif @trapType == "Seagull Curve" dist = @fn1(@fn2(y^2*@shapeAdjust2)-@shapeAdjust1^2* \ (@fn3(y^(5-@shapeAdjust3))+@fn5(x+(1-@shapeAdjust5))+ \ @fn4(y^(7-@shapeAdjust4))))-@distort elseif @trapType == "Simple Curve" dist = @fn1(atan(@fn4((x^@shapeAdjust4*@shapeAdjust1)- \ @fn3(y^@shapeAdjust5)*@shapeAdjust2))-@fn2(y^@shapeAdjust3))- \ @distort elseif @trapType == "Smoke Rings" dist = @fn1(@shapeAdjust1^4+@fn2((@shapeAdjust8*x^(2*@shapeAdjust3))* \ @fn5(y^@shapeAdjust4))- @shapeAdjust2^2-@fn3((x^(@shapeAdjust5)) \ ^@fn6(x+(1-@shapeAdjust6)))/ (2*@shapeAdjust1-@fn4(y^@shapeAdjust7))) \ -@distort elseif @trapType == "Sneering Curve" dist = @fn1(@fn2(x^2*@shapeAdjust1)-(@fn3((x*.2*@shapeAdjust6)* \ @fn9(y*@shapeAdjust2))-@fn4(y^2+(1-@shapeAdjust7)))* \ @fn5(y^(4*@shapeAdjust3))-@fn6(x^(2*@shapeAdjust8))/\ @fn7(x^(2*@shapeAdjust4)+@fn8(y^(.5*@shapeAdjust5))))-@distort elseif @trapType == "Space Debris" dist = @fn1(@shapeAdjust1^4*@fn2((y^2*@shapeAdjust3)/@fn5(x^2*@shapeAdjust4))-\ @shapeAdjust2^2*@fn3((x^@shapeAdjust5)^@fn6(x+(1-@shapeAdjust6)))* \ (2*@shapeAdjust1-@fn4(x^@shapeAdjust7)))-@distort elseif @trapType == "Spectacles Curve" dist = @fn1(@fn2(x^4*@shapeAdjust2)+@fn3(y^4*@shapeAdjust3)-2* \ @shapeAdjust5*@fn4(abs(x^@shapeAdjust4)- \ @fn5(y^2*@shapeAdjust1)))-@distort elseif @trapType == "Spiked Cusp" dist = @fn1(@fn2((y*@shapeAdjust1)^@fn4(y^@shapeAdjust2)* \ @fn3(x*@shapeAdjust3)))-@distort elseif @trapType == "Squared Circle Curve" dist = @fn1((@fn2(x^2*@shapeAdjust1))*(@fn3(x^2*@shapeAdjust3)- \ @fn4(y^2*@shapeAdjust4))-@shapeAdjust2^2/2+ \ @fn5(y^(4*@shapeAdjust5)))-@distort elseif @trapType == "Squeezed Rectangle Curve" dist = @fn1(@fn2(x^2*@shapeAdjust2)-@shapeAdjust1* \ (@fn3(y^(5-@shapeAdjust3))-@fn5(x^@shapeAdjust5)- \ @fn4(y^(7-@shapeAdjust4))))-@distort elseif @trapType == "Swallow Curve" dist = @fn1(@fn2((x^2*@shapeAdjust2))-@fn3((y^2*@shapeAdjust3)))^2-4* \ @shapeAdjust1*@fn4((x^@shapeAdjust5^@fn6(y^2*@shapeAdjust4))* \ @fn5(y^(2*@shapeAdjust5)))-@distort elseif @trapType == "Stretched Oval Curve" dist = @fn1(@shapeAdjust1^4+@fn2((y^(2*@shapeAdjust3))/@fn5 \ (x^(2*@shapeAdjust4)))-@shapeAdjust2^2*@fn3((x^(2*@shapeAdjust5))\ *@fn6(x+(1-@shapeAdjust6)))*(2*@shapeAdjust1-@fn4(x^@shapeAdjust7)))-@distort elseif @trapType == "Switchback Curve" dist = @fn1(atan(@fn4((x^(2*@shapeAdjust1))*@fn3(y^@shapeAdjust4)* \ @shapeAdjust2))-@fn2(x^@shapeAdjust3))-@distort elseif @trapType == "Taurus Curve" dist = @fn1(@fn2(x^(@shapeAdjust3)))-@fn3(y^(2*@shapeAdjust4))/ \ @shapeAdjust1^2-@fn4((x^(2*@shapeAdjust7))+@fn6(y^2+(1-@shapeAdjust6)))/ \ @shapeAdjust2^2*@fn5(x^@shapeAdjust5)-@distort elseif @trapType == "Teardrop Curve" dist = @fn1(@shapeAdjust1^4*@fn2((y^(2*@shapeAdjust3))/@fn5(x^2*@shapeAdjust4))- \ @shapeAdjust2^2*@fn3((x^(2*@shapeAdjust5))/@fn6(x+(1-@shapeAdjust6)))* \ (2*@shapeAdjust1-@fn4(x^@shapeAdjust7)))-@distort elseif @trapType == "Tennis Anyone?" dist = @fn1(@fn2(x^2*@shapeAdjust3)+2*@shapeAdjust1* \ @fn3((x^@shapeAdjust7)-@fn6(y*@shapeAdjust4))- \ @shapeAdjust1^2)^2-@fn4(y^2*@shapeAdjust5)* \ (@shapeAdjust2^2-@fn5(x^2*@shapeAdjust6))- @distort elseif @trapType == "Thick 'n Thin" dist = @fn1(@fn2((y*@shapeAdjust1)^@fn4(y^@shapeAdjust2)/ \ @fn3(y+(1-@shapeAdjust3))))-@distort elseif @trapType == "Thorned Cross" dist = @fn1(@fn2((y*@shapeAdjust1)^@fn5(y^@shapeAdjust2)* \ @fn3(x*@shapeAdjust3))+@fn4(x+(1-@shapeAdjust4)))-@distort elseif @trapType == "Three Point Curve" dist = @fn1((@fn2(x^2)-@shapeAdjust1^2)*@fn3(x^2-@shapeAdjust3)^2+ \ @fn4(y^(4-@shapeAdjust4)-@shapeAdjust2^2)^2)- @distort elseif @trapType == "Wheel in Trough" dist = @fn1((@fn2((x*@shapeAdjust4)^(1+@shapeAdjust2))+ \ @fn3(y^2*@shapeAdjust3))*atan2(@fn4(y^@shapeAdjust7)* \ @fn5(x^(1+@shapeAdjust5)))-@shapeAdjust1* \ @fn6(y^@shapeAdjust6))-@distort elseif @trapType == "Whip Curve" dist = @fn1(@fn2((y*@shapeAdjust1)^@fn6(y^@shapeAdjust2)* \ @fn3(y*@shapeAdjust3))+@fn4(x+(1-@shapeAdjust4))- \ @fn5(y^(2*@shapeAdjust5)))-@distort endif if @trapType == "Ampersand Curve" dist = @fn1((@fn2(y^(2*@shapeAdjust3))-@fn3(x^2+(1-@shapeAdjust4)))* \ @fn4((x^@shapeAdjust5)-1)*(@shapeAdjust1*@fn5(x)-@shapeAdjust2)- \ 4*(@fn6(x^2*@shapeAdjust6)+@fn7(y^(2*@shapeAdjust7))-2* \ @fn8(x^@shapeAdjust8))^2)-@distort elseif @trapType == "ArcTangent" dist = @fn1(atan(@fn2(x^@shapeAdjust1*@shapeAdjust3))- \ @fn3(y^@shapeAdjust2))-@distort elseif @trapType == "Bean Curve" dist = @fn1(@fn2(x^4*@shapeAdjust1)+@fn3(x^(2*@shapeAdjust2))* \ @fn4(y^(2*@shapeAdjust3))+@fn5(y^4*@shapeAdjust4)- \ @fn6(x^@shapeAdjust5)*@fn7(x^(2*@shapeAdjust6)+ \ @fn8(y^2+(1-@shapeAdjust7))))-@distort elseif @trapType == "Bicorn Curve" dist = @fn1(@fn2(y^2*@shapeAdjust2)*(@shapeAdjust1^2-@fn3(x^2)))- \ (@fn4(x^(2*@shapeAdjust3))+2*@shapeAdjust1* \ @fn5(y^@shapeAdjust4)-@shapeAdjust1^2)^2-@distort elseif @trapType == "Bicuspid Curve" dist = @fn1(@fn2(x^(2*@shapeAdjust2)-@shapeAdjust1^2)* \ @fn3(x^@shapeAdjust3-@shapeAdjust1)^2+ \ @fn4(y^(2*@shapeAdjust4)-@shapeAdjust1^2)^2)-@distort elseif @trapType == "Bifoliate" dist = @fn1(@fn2(x^4*@shapeAdjust2)+@fn3(y^4*@shapeAdjust3)- \ 2*@shapeAdjust1*@fn4(abs(x^@shapeAdjust4)* \ @fn5(y^(2*@shapeAdjust5))))-@distort elseif @trapType == "Bifolium" dist = @fn1(@fn2(x^(1+@shapeAdjust2))+@fn3(y^2+(1-@shapeAdjust3)))^2- \ 4*@shapeAdjust1*@fn4(abs(x^@shapeAdjust4)* \ @fn5(y^(3-@shapeAdjust5)))-@distort elseif @trapType == "Bow" dist = @fn1(@fn2(x^4*@shapeAdjust1)-@fn3(x^2+(1-@shapeAdjust2))* \ @fn4(y^@shapeAdjust3)+@fn5(y^3*@shapeAdjust4))-@distort elseif @trapType == "Butterfly Curve" dist = @fn1(@fn2(y^(6*@shapeAdjust1))-(@fn3(x^2+(1-@shapeAdjust2))- \ @fn4(x^6+(1-@shapeAdjust3))))-@distort elseif @trapType == "Cassini Ovals" dist = @fn1((@fn2(x^2*@shapeAdjust3)+@fn3(y^2*@shapeAdjust4)+ \ @shapeAdjust1^2)^2-4*@shapeAdjust1^2* \ @fn4(x^(3-@shapeAdjust5))-@shapeAdjust2^4)-@distort elseif @trapType == "Circle" dist = @fn1(@fn2((x*@shapeAdjust1)^(3-@shapeAdjust2))+ \ @fn3((y*@shapeAdjust3)^(3-@shapeAdjust4))-1)-@distort elseif @trapType == "Cissoid of Diocles" dist = @fn1(@fn2(x^@shapeAdjust2)*@fn3(x^2+(1-@shapeAdjust3)+ \ @fn4(y^2*@shapeAdjust4))-2*@shapeAdjust1* \ @fn5(y^2+(1-@shapeAdjust5)))-@distort elseif @trapType == "Cochleoid" dist = @fn1((@fn2(x^2*@shapeAdjust2)+@fn3(y^2*@shapeAdjust3))* \ atan(@fn4(y^@shapeAdjust4)/@fn5(x^@shapeAdjust5))- \ @shapeAdjust1*abs(@fn6(y^@shapeAdjust6)))-@distort elseif @trapType == "Cocked Hat" dist = @fn1(@fn2(x^2*@shapeAdjust3)+2*@shapeAdjust1*@fn3(y^@shapeAdjust4)- \ @shapeAdjust1^2)^2-@fn4(y^(3-@shapeAdjust5))* \ (@shapeAdjust2^2-@fn5(x^2*@shapeAdjust6))-@distort elseif @trapType == "Conchoid of Nicomedes" dist = @fn1((@fn2(x-@shapeAdjust1))^2*(@fn3(x^(2*@shapeAdjust3))+ \ @fn4(y^2*@shapeAdjust4))-@shapeAdjust2^2* \ @fn5(x^2*@shapeAdjust5))-@distort elseif @trapType == "Cruciform" dist = @fn1(@fn2(x^2*@shapeAdjust3)*@fn3(y^(1+@shapeAdjust4))- \ @shapeAdjust1^2*@fn4(x^(1+@shapeAdjust5))-@shapeAdjust2^2* \ @fn5(y^(3-@shapeAdjust6)))-@distort elseif @trapType == "Devil's Curve" dist = @fn1(@fn2(y^(3+@shapeAdjust4))-@shapeAdjust1^2* \ @fn3(y^2+(1-@shapeAdjust5))-@fn4(x^4*@shapeAdjust3)+ \ @shapeAdjust2^2*@fn5(x^(1+@shapeAdjust6)))-@distort elseif @trapType == "Diamond" dist = @fn1(abs(@fn2(x*@shapeAdjust1))+abs(@fn3(y^@shapeAdjust2))-1)- \ @distort elseif @trapType == "Dumbbell Curve" dist = @fn1(@fn2(y^2*@shapeAdjust2)-@shapeAdjust1^2* \ (@fn3(x^(5-@shapeAdjust3))-@fn4(x^(7-@shapeAdjust4))))-@distort elseif @trapType == "Dürer's Conchoid" dist = @fn1(2*@fn2(y^(1+@shapeAdjust3))*(@fn3(x^(1+@shapeAdjust4))+ \ @fn4(y^2*@shapeAdjust5))-2*@shapeAdjust2* \ @fn5(y^2+(1-@shapeAdjust6))*(@fn6(x^@shapeAdjust7)+ \ @fn7(y+(1-@shapeAdjust8)))+(@shapeAdjust2^2-3*@shapeAdjust1^2)* \ @fn8(y^(1+@shapeAdjust9))-@shapeAdjust1^2* \ @fn9(x^2*@shapeAdjust10)+2*@shapeAdjust1^2*@shapeAdjust2* \ (@fn10(x^@shapeAdjust11)+@fn11(y^@shapeAdjust12))+ \ @shapeAdjust1^2*(@shapeAdjust1^2-@shapeAdjust2^2))-@distort elseif @trapType == "Eight Curve" dist = @fn1(@fn2(x^(3+@shapeAdjust2))-@shapeAdjust1^2* \ (@fn3(x^2*@shapeAdjust3)-@fn4(y^2*@shapeAdjust4)))-@distort elseif @trapType == "Happy Accident" dist = @fn1((@fn2((x*@shapeAdjust4)^(1+@shapeAdjust2))+ \ @fn3(y^2*@shapeAdjust3))*atan2(@fn4(y^@shapeAdjust7)* \ @fn5(x^@shapeAdjust5))-@shapeAdjust1*@fn6 \ (y^@shapeAdjust6))-@distort elseif @trapType == "Hyperbola" dist = @fn1(@fn2((x*@shapeAdjust1)^(1+@shapeAdjust2))- \ @fn3((y*@shapeAdjust3)^(1+@shapeAdjust4)) + 1)-@distort elseif @trapType == "Kappa Curve" dist = @fn1((@fn2(x^(3-@shapeAdjust2))+@fn3(y^2*@shapeAdjust3))* \ @fn4(y^(1+@shapeAdjust4))-@shapeAdjust1^2* \ @fn5(x^2*@shapeAdjust5))-@distort elseif @trapType == "Keppler's Folium" dist = @fn1(((@fn2(x^@shapeAdjust3)-@shapeAdjust2)^2+ \ @fn3(y^2+(1-@shapeAdjust4)))*(@fn4(x+(1-@shapeAdjust5))* \ (@fn5(x-(@shapeAdjust6-1))-@shapeAdjust2)+@fn6 \ (y^(1+@shapeAdjust7)))-4*@shapeAdjust1* \ (abs(@fn7(x+(@shapeAdjust8-1)))-@shapeAdjust2)* \ @fn8(y^(2*@shapeAdjust9)))-@distort elseif @trapType == "Keratoid Cusp" dist = @fn1(@fn2(x^(2*@shapeAdjust1))*@fn3(y^@shapeAdjust2)+ \ @fn4(x^(5*@shapeAdjust3))-@fn5(y^(3-@shapeAdjust4)))-@distort elseif @trapType == "Knot Curve" dist = @fn1((@fn2(x^(1+@shapeAdjust1)-1)^2)-@fn3(y^2*@shapeAdjust2)* \ (3+2*@fn4(y*@shapeAdjust3)))-@distort elseif @trapType == "Lemniscate" dist = @fn1((@fn2(x^2+(1-@shapeAdjust2))+@fn3(y^(1+@shapeAdjust3)))^2- \ 2*@shapeAdjust1*(@fn4(x^(2*@shapeAdjust4))- \ @fn5(y^2*@shapeAdjust5)))-@distort elseif @trapType == "Lemniscate Corrected" dist = @fn1(@fn2(x^4+(1-@shapeAdjust2))+@fn3(y^4+(3-@shapeAdjust3))* \ @fn4(x^2*@shapeAdjust4)*@fn5(y^(2*@shapeAdjust5))-2* \ @shapeAdjust1^2*(@fn6(x^(2*@shapeAdjust6))- \ @fn7(y^(1+@shapeAdjust7))))-@distort elseif @trapType == "Limacon" dist = @fn1((@fn2(x^(2*@shapeAdjust3))+@fn3(y^2+(1-@shapeAdjust4))-2* \ @shapeAdjust1*@fn4(x^@shapeAdjust5))^2-@shapeAdjust2^2* \ (@fn5(x^2*@shapeAdjust6)+@fn6(y^2*@shapeAdjust7)))-@distort elseif @trapType == "Line" dist = @fn1(y^@shapeAdjust1)-@distort elseif @trapType == "Links Curve" dist = @fn1((@fn2(x^2*@shapeAdjust1)+@fn3(y^(2*@shapeAdjust2))-3* \ @fn4(x^@shapeAdjust3))^2-4*@fn5(x^(2*@shapeAdjust4))* \ (2-abs(@fn6(x^@shapeAdjust5))))-@distort elseif @trapType == "Maltese Cross Curve" dist = @fn1(@fn2(x^2*@shapeAdjust1)+@fn3(y^(2*@shapeAdjust2))-abs \ (@fn4(x^@shapeAdjust3))*abs(@fn5(y+(1-@shapeAdjust4)))* \ (@fn6(x^(2+(1-@shapeAdjust5))-@fn7(y^(2*@shapeAdjust6)))))- \ @distort elseif @trapType == "Parabola" dist = @fn1(@fn2(x^(2*@shapeAdjust1))-@fn3(y^@shapeAdjust2))-@distort elseif @trapType == "Pear-Shaped Curve" dist = @fn1(@fn2(x^(4-@shapeAdjust3))* \ (@shapeAdjust1-@fn3(x^@shapeAdjust4))-@shapeAdjust2^2* \ @fn4(y^(2*@shapeAdjust5)))-@distort elseif @trapType == "Piriform" dist = @fn1(@shapeAdjust1^4*@fn2(y^(2*@shapeAdjust3))-@shapeAdjust2^2* \ @fn3(x^(3*@shapeAdjust4))*(2*@shapeAdjust1-@fn4(x/@shapeAdjust5)))- \ @distort elseif @trapType == "Quadrifolium" dist = @fn1((@fn2(x^(2*@shapeAdjust2))+@fn3(y^2*@shapeAdjust3))^3-4* \ @fn4(x^2+(1-@shapeAdjust4))*@fn5(y^(3-@shapeAdjust5))* \ @shapeAdjust1^2)-@distort elseif @trapType == "Rose Curve" complex tz = atan2(x + flip(y)) dist = @fn1(@shapeAdjust1*cos(@fn2(tz^@shapeAdjust3)) + \ @shapeAdjust2*sin(@fn3(tz^@shapeAdjust4)))-@distort elseif @trapType == "Serpentine Curve" dist = @fn1(@shapeAdjust1*@shapeAdjust2*@fn2(x^@shapeAdjust3)/ \ @fn3((x+1-@shapeAdjust3)^2+@shapeAdjust1^2)- \ @fn4(y^@shapeAdjust4))-@distort elseif @trapType == "sin(x)/x" dist = @fn1(10*@fn2(sin(x^@shapeAdjust1))/@fn3(x*@shapeAdjust2)- \ @fn4(y^@shapeAdjust3))-@distort elseif @trapType == "Sinus + Cosinus" dist = @fn1(sin(@shapeAdjust1*@fn2(x^@shapeAdjust3))+ \ cos(@shapeAdjust2*@fn3(x+(1-@shapeAdjust4)))+ \ @fn4(y^@shapeAdjust5))-@distort elseif @trapType == "Spiral" dist = abs((x^(2*@shapeAdjust2)+y^(2*@shapeAdjust3))^ \ @shapeAdjust1%1-.5+atan2(x*@shapeAdjust4+ \ (flip(y^@shapeAdjust5)))/(2*pi)) dist2 = abs((x^(2*@shapeAdjust6)+y^2)^@shapeAdjust1%1-.5+ \ atan2(x+flip(y))/(2*pi)+1) if dist2 < real(dist) dist = real(dist2) endif dist2 = abs((x^(2*@shapeAdjust6)+y^2)^@shapeAdjust1%1-.5+atan2(x+flip(y))/(2*pi)-1) if dist2 < real(dist) dist = real(dist2) endif dist = dist elseif @trapType == "Square" if abs(x) > abs(y) dist = @fn1(@fn2(abs(x^@shapeAdjust1))-1)-@distort else dist = @fn3(@fn4(abs(y^@shapeAdjust2))-1)-@distort2 endif elseif @trapType == "Stirrup Curve" dist = @fn1(@fn2((x^2-1)^2)-@fn3(y^2)*@fn4(y-1)*@fn5(y-2)* \ @fn6(y+5))-@distort elseif @trapType == "Strange Shape" dist = @fn1((@fn2(x^(2*@shapeAdjust2))+@fn3((y*@shapeAdjust8)^ \ (2*@shapeAdjust3)))*atan2(@fn4(x*@shapeAdjust4)^ \ @shapeAdjust7+flip(@fn5(y^@shapeAdjust5)))- \ @shapeAdjust1*@fn6(y^@shapeAdjust6))-@distort elseif @trapType == "Swastika Curve" dist = @fn1(@fn2(y^(4*@shapeAdjust1))-@fn3(x^4*@shapeAdjust2)- \ @fn4(x^@shapeAdjust3)*@fn5(y+(1-@shapeAdjust4)))-@distort elseif @trapType == "Tangent" dist = @fn1(tan(@fn2((x*@shapeAdjust1)^@shapeAdjust2))- \ @fn3(y*@shapeAdjust3)^@shapeAdjust4)-@distort elseif @trapType == "Trefoil" dist = @fn1(@fn2(x^(5-@shapeAdjust1))+@fn3(x^(2*@shapeAdjust2))* \ @fn4(y^2*@shapeAdjust3)+@fn5(y^(4*@shapeAdjust4))- \ @fn6(x^@shapeAdjust5)*(@fn7(x^2*@shapeAdjust6)- \ @fn8(y^2+(1-@shapeAdjust7))))-@distort elseif @trapType == "Trident" dist = @fn1(@fn2(x^3*@shapeAdjust2)-@shapeAdjust1^3- \ @fn3(x^@shapeAdjust3)*@fn4(y*@shapeAdjust4))-@distort elseif @trapType == "Trident of Descartes" dist = @fn1((@shapeAdjust1+@fn2(x^@shapeAdjust2))* \ (@shapeAdjust1-@fn3(x*@shapeAdjust3))* \ (2*@shapeAdjust1-@fn4(x^@shapeAdjust4))/ \ (@shapeAdjust1*@fn5(x+(1-@shapeAdjust5)))- \ @fn6(y^@shapeAdjust6))-@distort elseif @trapType == "Trifolium" dist = @fn1((@fn2(x^2*@shapeAdjust3)+@fn3(y^(2*@shapeAdjust4)))* \ (@fn4(y^(2*@shapeAdjust5))+@fn5(x^@shapeAdjust6)* \ @fn6(x+@shapeAdjust1))-4*@shapeAdjust2* \ @fn7(x^@shapeAdjust7)*@fn8(y^2+(1-@shapeAdjust8)))-@distort elseif @trapType == "Trisectrix of Maclaurin" dist = @fn1(@fn2(y^2*@shapeAdjust2)*(@shapeAdjust1+ \ @fn3(x^@shapeAdjust3))-@fn4(x^(2*@shapeAdjust4))* \ (3*@shapeAdjust1-@fn5(x*@shapeAdjust5)))-@distort elseif @trapType == "Twisted Cross" dist = @fn1(@fn2(y^(5-@shapeAdjust1))-@fn3(x^(5-@shapeAdjust2))- \ @fn4(x^@shapeAdjust3)*@fn5(y+(1-@shapeAdjust4)))-@distort elseif @trapType == "Witch of Agnesi" dist = @fn1(8*@shapeAdjust2*@shapeAdjust1^3/ \ @fn2(x^(2*@shapeAdjust3)+4*@shapeAdjust1^2)- \ @fn3(y^@shapeAdjust4))-@distort endif if @varType == "normal" dist = dist elseif @varType == "modulus" dist = |dist| elseif @varType == "atan2" dist = atan2(dist) elseif @varType == "real" dist = real(dist) elseif @varType == "imag" dist = imag(dist) endif if @nuflav == true if @opadd == "None" dist = dist elseif @opadd == "+(X+Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" dist = dist + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" dist = dist - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" dist = dist + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" dist = dist - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ @nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" dist = dist + (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" dist = dist - (@nufuncxty(flip((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif else if @opadd == "None" dist = dist elseif @opadd == "+(X+Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X+Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x + \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X-Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd== "-(X-Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x - \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y-X)" dist = dist + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y-X)" dist = dist - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y - \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X*Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X*Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x * \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(X/Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X/Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x / \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y/X)" dist = dist + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y/X)" dist = dist - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y / \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "+(X^Y)" dist = dist + (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "-(X^Y)" dist = dist - (@nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x ^ \ flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y)) elseif @opadd == "+(Y^X)" dist = dist + (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) elseif @opadd == "-(Y^X)" dist = dist - (flip(@nufuncxty((y-@xtra1y)*@xtra2y)^@xtra3y ^ \ @nufuncxtx((x-@xtra1x)*@xtra2x)^@xtra3x)) endif endif z1l = @fnl1((z1-@z1o)*@z1s)^@z1e if @lightype == true if @light == "normal" dist = ((dist-@diso)*@diss)^@dise elseif @light == "real" dist = real(z1l-@fnl2((dist-@diso)*@diss)^@dise) elseif @light == "imag" dist = imag(z1l-@fnl2((dist-@diso)*@diss)^@dise) elseif @light == "cabs" dist = cabs(z1l-@fnl2((dist-@diso)*@diss)^@dise) elseif @light == "modulus" dist = |z1l-@fnl2((dist-@diso)*@diss)^@dise| endif else if @light == "normal" dist = ((dist-@diso)*@diss)^@dise elseif @light == "real" dist = real(z1l)- ((dist-@diso)*@diss)^@dise elseif @light == "imag" dist = imag(z1l)- ((dist-@diso)*@diss)^@dise elseif @light == "cabs" dist = cabs(z1l)- ((dist-@diso)*@diss)^@dise elseif @light == "modulus" dist = |z1l|- ((dist-@diso)*@diss)^@dise endif endif if @mode == 0 dist2 = real(@fnf1(z))+@f if @col == "real" dist = real((dist+.001*@trpp)^(@power*@pf)-dist2^@power)^2 elseif @col == "imag" dist = imag((dist+.001*@trpp)^(@power*@pf)-dist2^@power)^2 elseif @col == "real+imag" dist = (real((dist+.001*@trpp)^(@power*@pf)+imag(dist^(@power*@pf))) \ -dist2^@power)^2 elseif @col == "real-imag" dist = (real((dist+.001*@trpp)^(@power*@pf)-imag(dist^(@power*@pf))) \ -dist2^@power)^2 elseif @col == "Function" dist = @styleFnc((dist+.001*@trpp)^(@power*@pf)-dist2^@power)^2 endif d = real(dist+.001*@trpp)/real(@fnf2(z)+1/@w)^@power3 + d ist = i elseif @mode == 1 dist = (dist-@fission*.05)^@power if @cfnc == "ident" if d > real(dist^@exx2) if @numode == "recip" d = real(1/((dist^@exx1)+.001*@trpp)) ist = i elseif @numode == "ident" d = real(dist^@exx1+.001*@trpp) ist = i endif endif elseif @cfnc == "round" if d > real(round(dist^@exx2)) if @numode == "recip" d = real(1/((dist^@exx1)+.001*@trpp)) ist = i elseif @numode == "ident" d = real(dist^@exx1+.001*@trpp) ist = i endif endif elseif @cfnc == "trunc" if d > real(trunc(dist^@exx2)) if @numode == "recip" d = real(1/((dist^@exx1)+.001*@trpp)) ist = i elseif @numode == "ident" d = real(dist^@exx1+.001*@trpp) ist = i endif endif elseif @cfnc == "ceil" if d > real(ceil(dist^@exx2)) if @numode == "recip" d = real(1/((dist^@exx1)+.001*@trpp)) ist = i elseif @numode == "ident" d = real(dist^@exx1+.001*@trpp) ist = i endif endif elseif @cfnc == "recip" if d > real(recip(dist^@exx2)) if @numode == "recip" d = real(1/((dist^@exx1)+.001*@trpp)) ist = i elseif @numode == "ident" d = real(dist^@exx1+.001*@trpp) ist = i endif endif elseif @cfnc == "flip" if d > real(flip(dist^@exx2)) ist = i if @numode == "recip" d = real(1/((dist^@exx1)+.001*@trpp)) ist = i elseif @numode == "ident" d = real(dist^@exx1+.001*@trpp) ist = i endif endif elseif @cfnc == "modulus" if d > |dist^@exx2| if @numode == "recip" d = real(1/((dist^@exx1)+.001*@trpp)) ist = i elseif @numode == "ident" d = real(dist^@exx1+.001*@trpp) ist = i endif endif endif elseif @mode == 2 dist = (dist-@fission*.05)^@power/(cabs(z)+1)^@power3 if d > real(dist) d = real(dist+.001*@trpp) ist = i endif endif endif if @trapflavor == "Closest" if real(dist) < min_dist min_dist = real(dist) trap_z = z1 trap2_z = #z trap_iter = i trapped = true endif elseif @trapflavor == "First" if real(dist) < @threshold min_dist = real(dist) trap_z = z1 trap2_z = #z trap_iter = i trapped = true endif elseif @trapflavor == "Last" if real(dist) < @threshold && !trapped min_dist = real(dist) trap_z = z1 trap2_z = #z trap_iter = i trapped = true endif endif endif final: if trapped if tx > 0 if @ztyp == "#z" tz = ((#z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Morph z" tz = ((z1-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trap z" tz = ((z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trapped z" tz = ((trap_z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Trapped #z" tz = ((trap2_z-@txia1)*@txib1)^@txic1 elseif @ztyp == "Dist1 (Closest only)" tz = ((d-@txia1)*@txib1)^@txic1 elseif @ztyp == "Dist2 (Closest only)" tz = ((dist-@txia1)*@txib1)^@txic1 endif if @tt == 0 tz = @fntx2(@fntx1(tz))^@exad1 elseif @tt == 1 tz = @fntx1(real(tz))^@exad1+@fntx2(imag(tz))^@exad2 elseif @tt == 2 tz = @fntx1(real(tz))^@exad1-@fntx2(imag(tz))^@exad2 elseif @tt == 3 tz = @fntx1(real(tz))^@exad1*@fntx2(imag(tz))^@exad2 elseif @tt == 4 tz = @fntx1(imag(tz))^@exad1-@fntx2(real(tz))^@exad2 elseif @tt == 5 tz = @fntx2(@fntx1(x))^@exad1 elseif @tt == 6 tz = @fntx2(@fntx1(y))^@exad1 elseif @tt == 7 tz = @fntx1(x)^@exad1+@fntx2(y)^@exad2 elseif @tt == 8 tz = @fntx1(x)^@exad1-@fntx2(y)^@exad2 elseif @tt == 9 tz = @fntx2(y)^@exad2-@fntx1(x)^@exad1 elseif @tt == 10 tz = @fntx1(x)^@exad1*@fntx2(y)^@exad2 elseif @tt == 11 tz = @fntx1(x)^@exad1/@fntx2(y)^@exad2 elseif @tt == 12 tz = @fntx2(y)^@exad2/@fntx1(x)^@exad1 elseif @tt == 13 tz = @fntx1(x)^@exad1^@fntx2(y)^@exad2 elseif @tt == 14 tz = @fntx2(y)^@exad1^@fntx1(x)^@exad2 elseif @tt == 15 tz = @fntx1(x)^@exad1+@fntx2(tz)^@exad2 elseif @tt == 16 tz = @fntx1(x)^@exad1-@fntx2(tz)^@exad2 elseif @tt == 17 tz = @fntx2(tz)^@exad2-@fntx1(x)^@exad1 elseif @tt == 18 tz = @fntx1(x)^@exad1*@fntx2(tz)^@exad2 elseif @tt == 19 tz = @fntx1(x)^@exad1/@fntx2(tz)^@exad2 elseif @tt == 20 tz = @fntx2(tz)^@exad2/@fntx1(x)^@exad1 elseif @tt == 21 tz = @fntx1(y)^@exad1+@fntx2(tz)^@exad2 elseif @tt == 22 tz = @fntx1(y)^@exad1-@fntx2(tz)^@exad2 elseif @tt == 23 tz = @fntx2(tz)^@exad2-@fntx1(y)^@exad1 elseif @tt == 24 tz = @fntx1(y)^@exad1*@fntx2(tz)^@exad2 elseif @tt == 25 tz = @fntx1(y)^@exad1/@fntx2(tz)^@exad2 elseif @tt == 26 tz = @fntx2(tz)^@exad2/@fntx1(y)^@exad1 endif float zr = real(tz)%(@tv/10)/@ts*10 float zi = imag(tz)%(@tv/10)/@ts*10 float rz = floor(zr) float iz = floor(zi) if @tc > 0 float a1 = (rz + iz - 2)/ct float a2 = (rz + iz + 2)/ct else float a1 = (rz + iz - 2)%ct float a2 = (rz + iz + 2)%ct endif float a3 = a1 float a4 = a2 i = 0 float ez = 0 float h = 1 repeat h = h / 2 float fr = rz + h float fi = iz + h float za = (a1 + a2 + a3 + a4) / 4 ez = ez + za if (zr > fr) rz = fr if (zi > fi) iz = fi a1 = ez else a2 = ez endif else if (zi > fi) iz = fi a3 = ez else a4 = ez endif endif i = i + 1 until i >= 20 endif t2 = abs((za-real(@fntx3(za)))) if @add_sgn == false t2 = (za-real(@fntx3(za))) endif ;Random complex hasard = #random texture_rnd = .1 * @rnd * (real(hasard)+ imag(hasard)) ; fBm if (@fbmtxt != 0) r1 = (0,1) ^ (@fbmangle / 90.0) r2 = (0,1) ^ (@fbmastep / 90.0) if @ztyp4 == "#z" tz = ((#z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Morph z" tz = ((z1-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trap z" tz = ((z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trapped z" tz = ((trap_z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Trapped #z" tz = ((trap2_z-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Dist1 (Closest only)" tz = ((d-@txia4)*@txib4)^@txic4 elseif @ztyp4 == "Dist2 (Closest only)" tz = ((dist-@txia4)*@txib4)^@txic4 endif if @fbminit == 0 pfb = (@fntx9(@fntx8(tz))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 1 pfb = (@fntx8(real(tz))^@exad8+@fntx9(imag(tz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 2 pfb = (@fntx8(real(tz))^@exad8-@fntx9(imag(tz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 3 pfb = (@fntx8(real(tz))^@exad8*@fntx9(imag(tz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 4 pfb = (@fntx8(imag(tz))^@exad8-@fntx9(real(tz))^@exad9)* @fbmscale * r1 + \ @fbmoffset elseif @fbminit == 5 pfb = (@fntx9(@fntx8(x))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 6 pfb = (@fntx9(@fntx8(y))^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 7 pfb = (@fntx8(x)^@exad8+@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 8 pfb = (@fntx8(x)^@exad8-@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 9 pfb = (@fntx9(y)^@exad9-@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 10 pfb = (@fntx8(x)^@exad8*@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 11 pfb = (@fntx8(x)^@exad8/@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 12 pfb = (@fntx9(y)^@exad9/@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 13 pfb = (@fntx8(x)^@exad8^@fntx9(y)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 14 pfb = (@fntx9(y)^@exad9^@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 15 pfb = (@fntx8(x)^@exad8+@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 16 pfb = (@fntx8(x)^@exad8-@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 17 pfb = (@fntx9(tz)^@exad9-@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 18 pfb = (@fntx8(x)^@exad8*@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 19 pfb = (@fntx8(x)^@exad8/@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 20 pfb = (@fntx9(tz)^@exad9/@fntx8(x)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 21 pfb = (@fntx8(y)^@exad8+@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 22 pfb = (@fntx8(y)^@exad8-@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 23 pfb = (@fntx9(tz)^@exad9-@fntx8(y)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 24 pfb = (@fntx8(y)^@exad8*@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 25 pfb = (@fntx8(y)^@exad8/@fntx9(tz)^@exad9)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 26 pfb = (@fntx9(tz)^@exad9/@fntx8(y)^@exad8)* @fbmscale * r1 + @fbmoffset elseif @fbminit == 27 pfb = (@fntx9(@fntx8(pixel))^@exad8)* @fbmscale * r1 + @fbmoffset endif float summ = 0.0 float freq = 1.0 int i = @fbmoct while (i > 0) ; determine integer coordinate for corners of square ; surrounding p float bx0 = real(@fbmrfn2(@fbmrfn1(pfb))) % 256 float by0 = imag(@fbmifn2(@fbmifn1(pfb))) % 256 if (bx0 < 0) bx0 = bx0 + 256 endif if (by0 < 0) by0 = by0 + 256 endif float bx1 = (bx0 + @totc) % 256 float by1 = (by0 + @totd) % 256 float rx0 = real(pfb) - floor(real(pfb)) float ry0 = imag(pfb) - floor(imag(pfb)) float rx1 = rx0 - @tota float ry1 = ry0 - @totb float b00 = (bx0^@fbmpower % 65536 + by0)^@fbmpower % 65536 float b10 = (bx1^@fbmpower % 65536 + by0)^@fbmpower % 65536 float b01 = (bx0^@fbmpower % 65536 + by1)^@fbmpower % 65536 float b11 = (bx1^@fbmpower % 65536 + by1)^@fbmpower % 65536 float g_b00_0 = (b00)^@fbmpower*0.25 % 512 - 256 float g_b10_0 = (b10)^@fbmpower*0.25 % 512 - 256 float g_b01_0 = (b01)^@fbmpower*0.25 % 512 - 256 float g_b11_0 = (b11)^@fbmpower*0.25 % 512 - 256 float g_b00_1 = (b00+1)^@fbmpower*0.25 % 512 - 256 float g_b10_1 = (b10+1)^@fbmpower*0.25 % 512 - 256 float g_b01_1 = (b01+1)^@fbmpower*0.25 % 512 - 256 float g_b11_1 = (b11+1)^@fbmpower*0.25 % 512 - 256 float ddd = 0.0; ddd = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * ddd g_b00_1 = g_b00_1 * ddd ddd = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * ddd g_b10_1 = g_b10_1 * ddd ddd = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * ddd g_b01_1 = g_b01_1 * ddd ddd = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * ddd g_b11_1 = g_b11_1 * ddd float u1 = rx0 * g_b00_0 + ry0 * g_b00_1 float v1 = rx1 * g_b10_0 + ry0 * g_b10_1 float u2 = rx0 * g_b01_0 + ry1 * g_b01_1 float v2 = rx1 * g_b11_0 + ry1 * g_b11_1 float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float a = u1 + sx*(v1-u1) float b = u2 + sx*(v2-u2) summ = summ + (a + sy*(b-a))*freq freq = freq * @fbmstep pfb = pfb * r2 / @fbmstep i = i - 1 endwhile texture_fbm = .1 * @fbmtxt * summ endif if @fbm_limit !=0 texture_fbm= texture_fbm % @fbm_limit endif if @fbm_sgn == true texture_fbm = abs(texture_fbm) endif ;decimal if @dectxt > 0 if @ztyp2 == "#z" tz = ((#z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Morph z" tz = ((z1-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trap z" tz = ((z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trapped z" tz = ((trap_z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Trapped #z" tz = ((trap2_z-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Dist1 (Closest only)" tz = ((d-@txia2)*@txib2)^@txic2 elseif @ztyp2 == "Dist2 (Closest only)" tz = ((dist-@txia2)*@txib2)^@txic2 endif if @dec_init == 0 pd = real(@fntx5(@fntx4(tz))^@exad4) elseif @dec_init == 1 pd = real(@fntx4(real(tz))^@exad4+@fntx5(imag(tz))^@exad5) elseif @dec_init == 2 pd = real(@fntx4(real(tz))^@exad4-@fntx5(imag(tz))^@exad5) elseif @dec_init == 3 pd = real(@fntx4(real(tz))^@exad4*@fntx5(imag(tz))^@exad5) elseif @dec_init == 4 pd = real(@fntx4(imag(tz))^@exad4-@fntx5(real(tz))^@exad5) elseif @dec_init == 5 pd = real(@fntx5(@fntx4(x))^@exad4) elseif @dec_init == 6 pd = real(@fntx5(@fntx4(y))^@exad4) elseif @dec_init == 7 pd = real(@fntx4(x)^@exad4+@fntx5(y)^@exad5) elseif @dec_init == 8 pd = real(@fntx4(x)^@exad4-@fntx5(y)^@exad5) elseif @dec_init == 9 pd = real(@fntx5(y)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 10 pd = real(@fntx4(x)^@exad4*@fntx5(y)^@exad5) elseif @dec_init == 11 pd = real(@fntx4(x)^@exad4/@fntx5(y)^@exad5) elseif @dec_init == 12 pd = real(@fntx5(y)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 13 pd = real(@fntx4(x)^@exad4^@fntx5(y)^@exad5) elseif @dec_init == 14 pd = real(@fntx5(y)^@exad4^@fntx4(x)^@exad5) elseif @dec_init == 15 pd = real(@fntx4(x)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 16 pd = real(@fntx4(x)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 17 pd = real(@fntx5(tz)^@exad4-@fntx4(x)^@exad5) elseif @dec_init == 18 pd = real(@fntx4(x)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 19 pd = real(@fntx4(x)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 20 pd = real(@fntx5(tz)^@exad4/@fntx4(x)^@exad5) elseif @dec_init == 21 pd = real(@fntx4(y)^@exad4+@fntx5(tz)^@exad5) elseif @dec_init == 22 pd = real(@fntx4(y)^@exad4-@fntx5(tz)^@exad5) elseif @dec_init == 23 pd = real(@fntx5(tz)^@exad4-@fntx4(y)^@exad5) elseif @dec_init == 24 pd = real(@fntx4(y)^@exad4*@fntx5(tz)^@exad5) elseif @dec_init == 25 pd = real(@fntx4(y)^@exad4/@fntx5(tz)^@exad5) elseif @dec_init == 26 pd = real(@fntx5(tz)^@exad4/@fntx4(y)^@exad5) endif if @dec_type == 0 pd = pd-ceil(pd*@dec_scale)/@dec_scale elseif @dec_type == 1 pd = pd-floor(pd*@dec_scale)/@dec_scale elseif @dec_type == 2 pd = pd-trunc(pd*@dec_scale)/@dec_scale elseif @dec_type == 3 pd = pd-round(pd*@dec_scale)/@dec_scale elseif @dec_type == 4 pd = pd-real(@fndec(pd*@dec_scale))/@dec_scale elseif @dec_type == 5 pd = pd-round(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 6 pd = pd-round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 7 pd = pd+round(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 8 pd = pd-round(pd*@dec_scale)/@dec_scale-trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 9 pd = pd-round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 10 pd = pd+round(pd*@dec_scale)/@dec_scale*trunc(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 11 pd = pd-trunc(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 12 pd = pd-trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 13 pd = pd+trunc(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 14 pd = pd-trunc(pd*@dec_scale)/@dec_scale-ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 15 pd = pd-trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 16 pd = pd+trunc(pd*@dec_scale)/@dec_scale*ceil(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 17 pd = pd-ceil(pd*@dec_scale)/@dec_scale-floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 18 pd = pd-ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale2)/@dec_scale2 elseif @dec_type == 19 pd = pd+ceil(pd*@dec_scale)/@dec_scale*floor(pd*@dec_scale)/@dec_scale2 endif if @dec_size != 0 pd = pd/@dec_size endif texture_dec = @dectxt*pd if @dec_limit !=0 texture_dec= texture_dec%@dec_limit endif if @dec_sgn == true texture_dec = abs(texture_dec) endif endif texture_dec = .1 * texture_dec * @decamt if (@gnarl_amt != 0) if @ztyp3 == "#z" tz = ((#z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Morph z" tz = ((z1-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trap z" tz = ((z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trapped z" tz = ((trap_z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Trapped #z" tz = ((trap2_z-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Dist1 (Closest only)" tz = ((d-@txia3)*@txib3)^@txic3 elseif @ztyp3 == "Dist2 (Closest only)" tz = ((dist-@txia3)*@txib3)^@txic3 endif if @gnarl_init == 0 p = @fntx7(@fntx6(tz))^@exad6 elseif @gnarl_init == 1 p = @fntx6(real(tz))^@exad6+@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 2 p = @fntx6(real(tz))^@exad6-@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 3 p = @fntx6(real(tz))^@exad6*@fntx7(imag(tz))^@exad7 elseif @gnarl_init == 4 p = @fntx6(imag(tz))^@exad6-@fntx7(real(tz))^@exad7 elseif @gnarl_init == 5 p = @fntx7(@fntx6(x))^@exad6 elseif @gnarl_init == 6 p = @fntx7(@fntx6(y))^@exad6 elseif @gnarl_init == 7 p = @fntx6(x)^@exad6+@fntx7(y)^@exad7 elseif @gnarl_init == 8 p = @fntx6(x)^@exad6-@fntx7(y)^@exad7 elseif @gnarl_init == 9 p = @fntx7(y)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 10 p = @fntx6(x)^@exad6*@fntx7(y)^@exad7 elseif @gnarl_init == 11 p = @fntx6(x)^@exad6/@fntx7(y)^@exad7 elseif @gnarl_init == 12 p = @fntx7(y)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 13 p = @fntx6(x)^@exad6^@fntx7(y)^@exad7 elseif @gnarl_init == 14 p = @fntx7(y)^@exad6^@fntx6(x)^@exad7 elseif @gnarl_init == 15 p = @fntx6(x)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 16 p = @fntx6(x)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 17 p = @fntx7(tz)^@exad6-@fntx6(x)^@exad7 elseif @gnarl_init == 18 p = @fntx6(x)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 19 p = @fntx6(x)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 20 p = @fntx7(tz)^@exad6/@fntx6(x)^@exad7 elseif @gnarl_init == 21 p = @fntx6(y)^@exad6+@fntx7(tz)^@exad7 elseif @gnarl_init == 22 p = @fntx6(y)^@exad6-@fntx7(tz)^@exad7 elseif @gnarl_init == 23 p = @fntx7(tz)^@exad6-@fntx6(y)^@exad7 elseif @gnarl_init == 24 p = @fntx6(y)^@exad6*@fntx7(tz)^@exad7 elseif @gnarl_init == 25 p = @fntx6(y)^@exad6/@fntx7(tz)^@exad7 elseif @gnarl_init == 26 p = @fntx7(tz)^@exad6/@fntx6(y)^@exad7 elseif @gnarl_init == 27 p = @fntx7(@fntx6(pixel))^@exad6 endif if @gnarl_scaling == 0 p = p-ceil(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 1 p = p-floor(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 2 p = p-trunc(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 3 p = p-round(p*@gnarl_scale)/@gnarl_scale elseif @gnarl_scaling == 4 p = p-real(@fngnarl(p*@gnarl_scale))/@gnarl_scale elseif @gnarl_scaling == 5 p = p-round(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 6 p = p-round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 7 p = p+round(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 8 p = p-round(p*@gnarl_scale)/@gnarl_scale-trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 9 p = p-round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 10 p = p+round(p*@gnarl_scale)/@gnarl_scale*trunc(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 11 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 12 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 13 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 14 p = p-trunc(p*@gnarl_scale)/@gnarl_scale-ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 15 p = p-trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 16 p = p+trunc(p*@gnarl_scale)/@gnarl_scale*ceil(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 17 p = p-ceil(p*@gnarl_scale)/@gnarl_scale-floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 18 p = p-ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale2)/@gnarl_scale2 elseif @gnarl_scaling == 19 p = p+ceil(p*@gnarl_scale)/@gnarl_scale*floor(p*@gnarl_scale)/@gnarl_scale2 endif if @gnarl_size != 0 p = p/@gnarl_size endif xx = real(p) yy = imag(p) float xOld = 0 int iter3 = @gnarl_octaves while (iter3 > 0) iter3 = iter3-1 xOld = xx if @gnarl_form == 0 xx = xx - sin(yy + sin(yy)) yy = yy - sin(xOld + sin(xOld)) elseif @gnarl_form == 1 xx = xx - sin(yy + log(yy + cos(yy))) yy = yy - sin(xOld + log(xOld + cos(xOld))) elseif @gnarl_form == 2 xx = xx - sin(yy + cos(yy)) yy = yy - sin(xOld + cos(xOld)) elseif @gnarl_form == 3 xx = xx - sin(yy + log(yy + tan(yy))) yy = yy - sin(xOld + log(xOld + tan(xOld))) elseif @gnarl_form == 4 xx = xx - sin(yy + log(yy + sin(yy))) yy = yy - sin(xOld + log(xOld + sin(xOld))) endif endwhile if (@gnarl_type == 0) texture_gna = real(@fng(xx)) elseif (@gnarl_type == 1) texture_gna = real(@fng(yy)) elseif (@gnarl_type == 2) texture_gna = real(@fng(xx+yy)) elseif (@gnarl_type == 3) texture_gna = real(@fng(xx*yy)) elseif (@gnarl_type == 4) texture_gna = real(@fng(xx-yy)) elseif (@gnarl_type == 5) texture_gna = real(@fng(xx/yy)) elseif (@gnarl_type == 6) texture_gna = real(@fng(yy/xx)) elseif (@gnarl_type == 7) texture_gna = real(@fng(xx^yy)) elseif (@gnarl_type == 8) texture_gna = real(@fng(yy^xx)) elseif (@gnarl_type == 9) texture_gna = real(@fng(1/xx)) elseif (@gnarl_type == 10) texture_gna = real(@fng(1/yy)) elseif (@gnarl_type == 11) texture_gna = atan2(xx+1i*yy)/(2*#pi) if (texture_gna < 0) texture_gna = texture_gna + 1 endif elseif (@gnarl_type == 12) texture_gna = |xx+1i*yy| elseif (@gnarl_type == 13) texture_gna = (xx+yy+|xx+1i*yy|)/3 elseif (@gnarl_type == 14) texture_gna = (xx*yy*|xx+1i*yy|)^(1/3) endif if @gnarl_limit !=0 texture_gna= .1 * (texture_gna%@gnarl_limit) * @gnarl_amt endif endif ;geometrix if (@trtxt != 0) if @ztyp5 == "#z" tz = ((#z-@txia3)*@txib3)^@txic3 elseif @ztyp5 == "Morph z" tz = ((z1-@txia3)*@txib3)^@txic3 elseif @ztyp5 == "Trap z" tz = ((z-@txia3)*@txib3)^@txic3 elseif @ztyp5 == "Trapped z" tz = ((trap_z-@txia3)*@txib3)^@txic3 elseif @ztyp5 == "Trapped #z" tz = ((trap2_z-@txia3)*@txib3)^@txic3 elseif @ztyp5 == "Dist1 (Closest only)" tz = ((d-@txia3)*@txib3)^@txic3 elseif @ztyp5 == "Dist2 (Closest only)" tz = ((dist-@txia3)*@txib3)^@txic3 endif if @trinit == 0 ptr = (@fntx11(@fntx10(tz))^@exad10) elseif @trinit == 1 ptr = (@fntx10(real(tz))^@exad10+@fntx11(imag(tz))^@exad11) elseif @trinit == 2 ptr = (@fntx10(real(tz))^@exad10-@fntx11(imag(tz))^@exad11) elseif @trinit == 3 ptr = (@fntx10(real(tz))^@exad10*@fntx11(imag(tz))^@exad11) elseif @trinit == 4 ptr = (@fntx10(imag(tz))^@exad10-@fntx11(real(tz))^@exad11) elseif @trinit == 5 ptr = (@fntx11(@fntx10(x))^@exad10) elseif @trinit == 6 ptr = (@fntx11(@fntx10(y))^@exad10) elseif @trinit == 7 ptr = (@fntx10(x)^@exad10+@fntx11(y)^@exad11) elseif @trinit == 8 ptr = (@fntx10(x)^@exad10-@fntx11(y)^@exad11) elseif @trinit == 9 ptr = (@fntx11(y)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 10 ptr = (@fntx10(x)^@exad10*@fntx11(y)^@exad11) elseif @trinit == 11 ptr = (@fntx10(x)^@exad10/@fntx11(y)^@exad11) elseif @trinit == 12 ptr = (@fntx11(y)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 13 ptr = (@fntx10(x)^@exad10^@fntx11(y)^@exad11) elseif @trinit == 14 ptr = (@fntx11(y)^@exad11^@fntx10(x)^@exad10) elseif @trinit == 15 ptr = (@fntx10(x)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 16 ptr = (@fntx10(x)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 17 ptr = (@fntx11(tz)^@exad11-@fntx10(x)^@exad10) elseif @trinit == 18 ptr = (@fntx10(x)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 19 ptr = (@fntx10(x)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 20 ptr = (@fntx11(tz)^@exad11/@fntx10(x)^@exad10) elseif @trinit == 21 ptr = (@fntx10(y)^@exad10+@fntx11(tz)^@exad11) elseif @trinit == 22 ptr = (@fntx10(y)^@exad10-@fntx11(tz)^@exad11) elseif @trinit == 23 ptr = (@fntx11(tz)^@exad11-@fntx10(y)^@exad10) elseif @trinit == 24 ptr = (@fntx10(y)^@exad10*@fntx11(tz)^@exad11) elseif @trinit == 25 ptr = (@fntx10(y)^@exad10/@fntx11(tz)^@exad11) elseif @trinit == 26 ptr = (@fntx11(tz)^@exad11/@fntx10(y)^@exad10) endif endif complex z = z_values[#numiter-1] complex z = ptr float zrzr = real(@fnzr(ptr))*@scc float zizi = imag(@fnzi(ptr))*@scc float rzrz = floor(zrzr) float iziz = floor(zizi) r0r0 = rzrz - 1 i0i0 = iziz - 1 r1r1 = rzrz + 1 i1i1 = iziz + 1 azaz = cabs(@fn1tx(r0r0) + @fn2tx(i0i0)) azaz = cabs(@fn3tx(azaz)) azaz = (azaz % @shad1 * 2) bzbz = cabs(@fn1tx(r1r1) + @fn2tx(i0i0)) bzbz = cabs(@fn3tx(bzbz)) bzbz = (bzbz % @shad2 * 2) czcz = cabs(@fn1tx(r1r1) + @fn2tx(i1i1)) czcz = cabs(@fn3tx(czcz)) czcz = (czcz % @shad3 * 2) dzdz = cabs(@fn1tx(r0r0) + @fn2tx(i1i1)) dzdz = cabs(@fn3tx(dzdz)) dzdz = (dzdz % @shad4 * 2) i = 1 repeat avav = avav / (@trp1 * 2) xbxb = xbxb / (@trp2 * 2) frfr = rzrz + avav fifi = iziz + avav zaza = (azaz + bzbz + czcz + dzdz) / (@trp3 * 4) zzzz = zzzz * xbxb + zaza if (zrzr > frfr) if (zizi > fifi) rzrz = frfr iziz = fifi azaz = zzzz else rzrz = frfr dzdz = zzzz endif else if (zizi > fifi) iziz = fifi bzbz = zzzz else czcz = zzzz endif endif i = i + 1 until i >= @freq texture_tr = .1*(zaza-trunc(zaza*2)^@exp)*@trtxt if @geo_limit != 0 texture_tr = .1* ((zaza-trunc(zaza)^@exp*2)% @geo_limit)*@trtxt endif if @geo_sgn == true texture_tr = abs(texture_tr) endif if @mode == "Sum" texture = (texture_rnd + texture_fbm + texture_dec + texture_gna \ + texture_tr)*@txamt/10000 else texture = (texture_rnd + texture_fbm + texture_dec + texture_gna \ + texture_tr)*@txamt/10 endif if @invt if @mode == "Sum" if real(@msk) < d*10000 && !(@msk == 0) #solid = true endif else if real(1/@msk) > d && !(@msk == 0) #solid = true endif endif else if @mode == "Sum" if real(@msk) > d*10000 && !(@msk == 0) #solid = true endif else if real(1/@msk) < d && !(@msk == 0) #solid = true endif endif endif float #index = tmp if @colour == "Distance" tmp = 1000*d elseif @colour == "Modulated Iter" tmp = real((@colorFn(ist-@coffset)*@cstrength)^@cpower)%@ncol/(@ncol/@cd) elseif @colour == "Iteration" tmp = real((@colorFn(ist-@coffset)*@cstrength)^@cpower) elseif @colour == "Iter (Sum)" tmp = real((@colorFn(trap_iter-@coffset)*@cstrength)^@cpower) elseif @colour == "Mod Iter (Sum)" tmp = real((@colorFn(trap_iter-@coffset)*@cstrength)^@cpower)%@ncol/(@ncol/@cd) elseif @colour == "Angle" d = atan2(((dist-@coffset)*@cstrength)^@cpower)/(0.6*pi*@ang3) if(d<(.01*@ang4)-1) d = real(@colorfn(dist))*@ang1*2 endif tmp = real(10000)*d*@ang2 elseif @colour == "Angle (corrected)" theta = atan2(((trap_z-@coffset)*@cstrength)^@cpower) if real(theta) < 0 theta = real(@colorFn(theta))*2*#pi endif theta = 1/(2*#pi)*theta tmp = real(theta) elseif @colour == "Magnitude" tmp = cabs(@colorFn((trap_z-@coffset)*@cstrength)^@cpower) elseif @colour == "Real" tmp = real(@colorFn(((trap_z-@coffset)*@cstrength)^@cpower)) elseif @colour == "Imag" tmp = imag(@colorFn(((trap_z-@coffset)*@cstrength)^@cpower)) endif if @inv2 if real(@msk2) < (d*1000000) && !(@msk2 == 0) #solid = true endif else if real(@msk2) > (d*1000000) && !(@msk2 == 0) #solid = true endif endif if @mode == "Sum" txx = tx/10 else txx = tx*100 endif if @mode == "Sum" #index = tmp+(texture)+(txx*@txamt/100)/100 + t2*(txx*@txamt/100)/100 \ + rn*.1*@r*(txx*@txamt/100)/100 else #index = tmp+3*((texture)+(txx*@txamt/100)/100 + t2*(txx*@txamt/100)/100 \ + rn*.1*@r*(txx*@txamt/100)/100) endif else #solid = true endif default: title = "Thin Orbit Traps II" param version caption = "Version" default = 2.7 visible = false endparam heading caption = "Mode Options" endheading param mode caption = "Mode" default = 0 enum = "Sum" "Closest" "Closest (Corrected)" endparam param adv3 caption = "Mode Parameters" default = true endparam param col caption = "'Sum' Style" enum = "real""imag""real+imag""real-imag""Function" default = 0 hint = "Sets coloring style for 'Sum' mode" visible = @mode == 0 && @adv3 == true endparam func styleFnc caption = "Style Function" default = abs() visible = @mode == 0 && @col == "Function" && \ @adv3 == true endfunc int param trapflavor caption = "Trap Type" enum = "Closest""First""Last" default = 0 visible = false endparam float param threshold caption = "Element Width" default = 1.0 visible = false endparam float param f caption = "Adjust Normalization" default = 1.0 visible = @mode == 0 && @adv3 == true endparam float param pf caption = "Power Factor" default = 0.2 visible = @mode == 0 && @adv3 == true endparam float param w caption = "Density" default = 1.0 hint = "A down and dirty way to adjust the \ color density." visible = @mode == 0 && @adv3 == true endparam func fnf1 caption = "'Sum' Function 1" default = cabs() visible = @mode == 0 && @adv3 == true endfunc func fnf2 caption = "'Sum' Function 2" default = cabs() visible = @mode == 0 && @adv3 == true endfunc param numode caption = "Closest Style" enum = "ident""recip" default = 0 hint = "Sets coloring style for 'Closest' mode" visible = @mode == 1 && @adv3 == true && \ @colour < 5 endparam param cfnc caption = "Closest Function" enum = "ident""round""trunc""ceil""recip""flip""modulus" default = 0 visible = @mode == 1 && @adv3 == true && \ @colour < 5 endparam complex param exx1 caption = "Closest Power" default = (1.0,0.0) hint = "Adjust this value to eliminate banding outside the trapped \ elements or change their contrast. It also changes edge" visible = @version < 2.7 && @mode == 1 && @adv3 == true && \ @colour < 5 endparam complex param exx2 caption = "Edge Definition" default = (1.0,0.0) hint = "Moving in a positive direction gives an edge to the \ smaller elements, while moving in a negative direction \ tends to blend them into the larger elements" visible = @mode == 1 && @adv3 == true && \ @colour < 5 endparam float param fission caption = "Fission" default = 0 hint = "Positive values split and thin the traps; negative values \ thicken the traps but reduce contrast, so you will have \ to adjust the gradient and/or change the transfer function" visible = @mode == 1 && @adv3 == true && \ @colour < 5 endparam float param power caption = "Main Power" default = .01 visible = @adv2 endparam float param power3 caption = "Decay Power" default = 1.0 visible = @mode != 1 && @adv2 endparam float param trpp caption = "Element Trim" default = 0.0 visible = @adv2 endparam heading caption = "Coloring Options" endheading param colour caption = "Color By" enum = "Distance""Iteration""Modulated Iter""Iter (Sum)" "Mod Iter (Sum)"\ "Angle""Angle (corrected)""Magnitude""Real""Imag" default = 0 endparam heading caption = "Coloring Parameters" visible = @colour == "Modulated Iter" || @colour == "Mod Iter (Sum)" endheading float param ncol caption = "Color Ranges" default = 3.0 hint = "You can enter decimal values for \ modulated ranges with a phase shift." visible = @colour == "Modulated Iter" || @colour == "Mod Iter (Sum)" endparam float param cd caption = "Range Depth" default = 1.0 hint = "This param determines how much \ of the gradient is mapped on the \ elements using 'Modulated Iter'" visible = @colour == "Modulated Iter" || @colour == "Mod Iter (Sum)" endparam func colorFn caption = "Color function" default = ident() visible = @colour > 0 endfunc complex param coffset caption = "Color Offset" default = (0,0) visible = @colour > 0 endparam complex param cstrength caption = "Color Strength" default = (1,0) visible = @colour > 0 endparam complex param cpower caption = "Color Power" default = (1,0) visible = @colour > 0 endparam heading caption = "Angle Parameters" visible = @colour == "Angle" endheading float param ang1 caption = "Angle Shading 1" default = 1.0 visible = @colour == "Angle" endparam float param ang2 caption = "Angle Shading 2" default = 1.0 visible = @colour == "Angle" endparam float param ang3 caption = "Angle Shading 3" default = 1.0 visible = @colour == "Angle" endparam float param ang4 caption = "Angle Shading 4" default = 1.0 visible = @colour == "Angle" endparam heading caption = "Trap Parameters" visible = (@shapeAdjust1 == 1.0 && @shapeAdjust1 == 1.0 && @shapeAdjust2 == 1.0 \ && @shapeAdjust3 == 1.0 && @shapeAdjust4 == 1.0 && @shapeAdjust5 == 1.0 \ && @shapeAdjust6 == 1.0 && @shapeAdjust7 == 1.0 && @shapeAdjust8 == 1.0 \ && @shapeAdjust9 == 1.0 && @shapeAdjust10 == 1.0 && @shapeAdjust11 == 1.0 \ && @shapeAdjust12 == 1.0 && @distort == 0 && @distort2 == 0) endheading heading caption = "Trap Parameters [active]" visible = (@shapeAdjust1 != 1.0 || @shapeAdjust1 != 1.0 || @shapeAdjust2 != 1.0 \ || @shapeAdjust3 != 1.0 || @shapeAdjust4 != 1.0 || @shapeAdjust5 != 1.0 \ || @shapeAdjust6 != 1.0 || @shapeAdjust7 != 1.0 || @shapeAdjust8 != 1.0 \ || @shapeAdjust9 != 1.0 || @shapeAdjust10 != 1.0 || @shapeAdjust11 != 1.0 \ || @shapeAdjust12 != 1.0 || @distort != 0 || @distort2 != 0) endheading param trapType caption = "Trap Type" enum = "Alien Waves""Ampersand Curve""ArcTangent""Bad Hair Day""Barbed Wire" \ "Baubles & Bangles" "Bean Curve""Bicorn Curve""Bicuspid Curve""Bifoliate" \ "Bifolium" "Bighorn Curve" "Binary Curve" "Bird of Paradise" "Bow" \ "Butterfly Curve" "Cabuchon Curve" "Cardinal Points Curve" "Cassini Ovals" \ "Chaos Adorned" "Chaos Unleashed" "Church Key Curve" "Circle" \ "Cissoid of Diocles" "Cochleoid" "Cocked Hat" "Compass Curve" \ "Conchoid of Nicomedes" "Conjoined Circle Curve" "Conductor's Curve" \ "Cooking Pot Curve" "Cosmic Rays" "Crochet Hooks" "Crosshatch Curve" \ "Cruciform" "D&U Curve" "Devil's Curve" "Diamond" "Dogleg Curve" \ "Double Circle Curve" "Double Trine" "Dribs & Drabs" "Driftwood Curve" \ "Dulcimer Curve" "Dumbbell Curve" "Dürer's Conchoid" "Eight Curve" \ "Eye of the Needle" "Exclamation Point" "Fatback" "Floreate Curve" \ "Glyph Curve" "Gravity Waves" "Happy Accident" "Harpoon Curve" "Hook & Spar" \ "Hoops & Plates" "Horned Torus Curve" "Hyperbola" "Indented Parabola" \ "Intersecting Ovals" "Kappa Curve" "Keppler's Folium" "Keratoid Cusp" \ "Knot Curve" "Leaves of Grass" "Lemniscate" "Lemniscate Corrected" "Limacon" \ "Line" "Links Curve" "Lipped Ovals" "M curve" "Maltese Cross Curve" \ "Mercury Curve" "Miscellanea" "Moorish Fantasy" "Mousehead Curve" \ "Nested Ovals" "Nesting Birds Curve" "O-nami Curve" "Odds 'n Ends" \ "Omega Curve" "Ornate Curve" "Ovals" "Ovate Waves" "Ovate Waves 2" \ "Pacifier Curve" "Parabola" "Parenthetical Curve" "Pear-Shaped Curve" \ "Pincers" "Piriform" "Pisces Curve" "Plane & Tail" "Plane & Tail 2" \ "Quadrifolium" "Rose Curve" "Seagull Curve" "Serpentine Curve""Simple Curve"\ "sin(x)/x" "Sinus + Cosinus" "Smoke Rings" "Sneering Curve" "Space Debris" \ "Spectacles Curve" "Spiked Cusp" "Spiral" "Square" "Squared Circle Curve" \ "Squeezed Rectangle Curve" "Stirrup Curve" "Strange Shape" \ "Stretched Oval Curve" "Swallow Curve" "Swastika Curve" "Switchback Curve" \ "Tangent" "Taurus Curve" "Teardrop Curve" "Tennis Anyone?" "Thick 'n Thin" \ "Thorned Cross" "Three Point Curve" "Trefoil" "Trident" \ "Trident of Descartes" "Trifolium" "Trisectrix of Maclaurin" "Tsuba Curve" \ "Twisted Cross" "Wheel in Trough" "Whip Curve" "Witch of Agnesi" default = 15 hint = "The trap type." endparam param adv1 caption = "Trap Parameters" hint = "Additional shaping parameters and functions." default = false endparam float param shapeAdjust1 caption = "Shape Adj. I" default = 1.0 hint = "Shape adjustment parameter I." visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || (@trapType == "Barbed Wire") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Bird of Paradise") || \ (@trapType == "Cabuchon Curve") || (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || (@trapType == "Church Key Curve") || \ (@trapType == "Compass Curve") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve") || \ (@trapType == "Cooking Pot Curve") || \ (@trapType == "Crochet Hooks") || (@trapType == "Cosmic Rays") || \ (@trapType == "Crosshatch Curve") || (@trapType == "D&U Curve") || \ (@trapType == "Dogleg Curve") || (@trapType == "Double Circle Curve") || \ (@trapType == "Dribs & Drabs") || (@trapType == "Double Trine") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || \ (@trapType == "Floreate Curve") || \ (@trapType == "Glyph Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Harpoon Curve") || (@trapType == "Hook & Spar") || \ (@trapType == "Hoops & Plates") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Indented Parabola") || (@trapType == "Intersecting Ovals") || \ (@trapType == "Leaves of Grass") || \ (@trapType == "Lipped Ovals") || \ (@trapType == "Mercury Curve") || (@trapType == "M Curve") || \ (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Omega Curve") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || \ (@trapType == "Spiked Cusp") || \ (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") ||\ (@trapType == "Stretched Oval Curve") || (@trapType == "Swallow Curve") || \ (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thick 'n Thin") || \ (@trapType == "Thorned Cross") || \ (@trapType == "Three Point Curve") || (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || \ (@trapType == "Whip Curve") ||\ (@trapType == "Ampersand Curve") || (@trapType == "ArcTangent") || \ (@trapType == "Bean Curve") || (@trapType == "Bicorn Curve") || \ (@trapType == "Bicuspid Curve") || (@trapType == "Bifoliate") || \ (@trapType == "Bifolium") || (@trapType == "Bow") || \ (@trapType == "Butterfly Curve") || (@trapType == "Cassini Ovals") || \ (@trapType == "Circle") || (@trapType == "Cissoid of Diocles") || \ (@trapType == "Cochleoid") || (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || \ (@trapType == "Cruciform") || \ (@trapType == "Devil's Curve") || (@trapType == "Diamond") || \ (@trapType == "Dumbbell Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Eight Curve") || \ (@trapType == "Happy Accident") || \ (@trapType == "Hyperbola") || \ (@trapType == "Kappa Curve") || (@trapType == "Keppler's Folium") || \ (@trapType == "Keratoid Cusp") || (@trapType == "Knot Curve") || \ (@trapType == "Lemniscate") || \ (@trapType == "Lemniscate Corrected") || (@trapType == "Limacon") || \ (@trapType == "Line") || (@trapType == "Links Curve") || \ (@trapType == "Maltese Cross Curve") || \ (@trapType == "Parabola") || (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || \ (@trapType == "Quadrifolium") || \ (@trapType == "Rose Curve") || \ (@trapType == "Serpentine Curve") || \ (@trapType == "sin(x)/x") || \ (@trapType == "Sinus + Cosinus") || \ (@trapType == "Spiral") || (@trapType == "Square") || \ (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || (@trapType == "Tangent") || \ (@trapType == "Trefoil") || \ (@trapType == "Trident") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium") || (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross") || \ (@trapType == "Witch of Agnesi")) endparam float param shapeAdjust2 caption = "Shape Adj. II" default = 1.0 hint = "Shape adjustment parameter II." visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || (@trapType == "Barbed Wire") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Bird of Paradise") || \ (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || (@trapType == "Church Key Curve") || \ (@trapType == "Compass Curve") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve") || \ (@trapType == "Cooking Pot Curve") || \ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "Crosshatch Curve") || (@trapType == "D&U Curve") || \ (@trapType == "Dogleg Curve") || (@trapType == "Double Circle Curve") || \ (@trapType == "Double Trine") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || (@trapType == "Floreate Curve") || \ (@trapType == "Glyph Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Harpoon Curve") ||(@trapType == "Hook & Spar") || \ (@trapType == "Hoops & Plates") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Indented Parabola") || \ (@trapType == "Intersecting Ovals") || \ (@trapType == "Leaves of Grass") || \ (@trapType == "Lipped Ovals") || (@trapType == "M Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Omega Curve") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || \ (@trapType == "Spiked Cusp") || (@trapType == "Squared Circle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thick 'n Thin") || \ (@trapType == "Thorned Cross") || \ (@trapType == "Three Point Curve") || (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "ArcTangent") || \ (@trapType == "Bean Curve") || (@trapType == "Bicorn Curve") || \ (@trapType == "Bicuspid Curve") || (@trapType == "Bifoliate") || \ (@trapType == "Bifolium") || \ (@trapType == "Bow") || (@trapType == "Butterfly Curve") || \ (@trapType == "Cassini Ovals") || (@trapType == "Circle") || \ (@trapType == "Cissoid of Diocles") || (@trapType == "Cochleoid") || \ (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || (@trapType == "Cruciform") || \ (@trapType == "Devil's Curve") || (@trapType == "Diamond") || \ (@trapType == "Dumbbell Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Eight Curve") || \ (@trapType == "Happy Accident") || (@trapType == "Hyperbola") || \ (@trapType == "Kappa Curve") || (@trapType == "Keppler's Folium") || \ (@trapType == "Keratoid Cusp") || (@trapType == "Knot Curve") || \ (@trapType == "Lemniscate") || \ (@trapType == "Lemniscate Corrected") || (@trapType == "Limacon") || \ (@trapType == "Links Curve") || (@trapType == "Maltese Cross Curve") || \ (@trapType == "Parabola") || (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || (@trapType == "Quadrifolium") || \ (@trapType == "Rose Curve") || (@trapType == "Serpentine Curve") || \ (@trapType == "sin(x)/x") || (@trapType == "Sinus + Cosinus") || \ (@trapType == "Spiral") || (@trapType == "Square") || \ (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || (@trapType == "Tangent") || \ (@trapType == "Trefoil") || \ (@trapType == "Trident") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium") || (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross") || \ (@trapType == "Witch of Agnesi")) endparam float param shapeAdjust3 caption = "Shape Adj. III" default = 1.0 hint = "Shape adjustment parameter III." visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || (@trapType == "Barbed Wire") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Bird of Paradise") || \ (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || (@trapType == "Church Key Curve") || \ (@trapType == "Compass Curve") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve")||\ (@trapType == "Cooking Pot Curve") || \ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "Crosshatch Curve") || \ (@trapType == "D&U Curve") || (@trapType == "Dogleg Curve") || \ (@trapType == "Double Circle Curve") || (@trapType == "Double Trine") || \ (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || (@trapType == "Floreate Curve") || \ (@trapType == "Glyph Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Harpoon Curve") || \ (@trapType == "Hook & Spar") || (@trapType == "Hoops & Plates") || \ (@trapType == "Horned Torus Curve") || \ (@trapType == "Indented Parabola") || \ (@trapType == "Intersecting Ovals") || \ (@trapType == "Leaves of Grass") || \ (@trapType == "Lipped Ovals") || (@trapType == "M Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || \ (@trapType == "Mousehead Curve") || (@trapType == "Nesting Birds Curve") || \ (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Omega Curve") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || \ (@trapType == "Spiked Cusp") || \ (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thick 'n Thin") || \ (@trapType == "Thorned Cross") || (@trapType == "Three Point Curve") || \ (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "ArcTangent") || \ (@trapType == "Bean Curve") || (@trapType == "Bicorn Curve") || \ (@trapType == "Bicuspid Curve") || (@trapType == "Bifoliate") || \ (@trapType == "Bifolium") || \ (@trapType == "Bow") || (@trapType == "Butterfly Curve") || \ (@trapType == "Cassini Ovals") || (@trapType == "Circle") || \ (@trapType == "Cissoid of Diocles") || (@trapType == "Cochleoid") || \ (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || \ (@trapType == "Cruciform") || (@trapType == "Devil's Curve") || \ (@trapType == "Dumbbell Curve") || (@trapType == "Dürer's Conchoid") || \ (@trapType == "Eight Curve") || (@trapType == "Happy Accident") || \ (@trapType == "Hyperbola") || (@trapType == "Kappa Curve") || \ (@trapType == "Keppler's Folium") || (@trapType == "Keratoid Cusp") || \ (@trapType == "Knot Curve") || \ (@trapType == "Lemniscate") || (@trapType == "Lemniscate Corrected") || \ (@trapType == "Limacon") || (@trapType == "Links Curve") || \ (@trapType == "Maltese Cross Curve") || \ (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || (@trapType == "Quadrifolium") || \ (@trapType == "Rose Curve") || (@trapType == "Serpentine Curve") || \ (@trapType == "sin(x)/x") || (@trapType == "Sinus + Cosinus") || \ (@trapType == "Spiral") || (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || (@trapType == "Tangent") || \ (@trapType == "Trefoil") || (@trapType == "Trident") || \ (@trapType == "Trident of Descartes") || (@trapType == "Trifolium") || \ (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross") || \ (@trapType == "Witch of Agnesi")) endparam float param shapeAdjust4 caption = "Shape Adj. IV" default = 1.0 hint = "Shape adjustment parameter IV." visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || \ (@trapType == "Barbed Wire") || (@trapType == "Baubles & Bangles") || \ (@trapType == "Bighorn Curve") || (@trapType == "Binary Curve") || \ (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || (@trapType == "Church Key Curve") || \ (@trapType == "Compass Curve") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve")||\ (@trapType == "Cooking Pot Curve") || \ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "D&U Curve") || (@trapType == "Dogleg Curve") || \ (@trapType == "Double Circle Curve") || \ (@trapType == "Double Trine") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || \ (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || \ (@trapType == "Floreate Curve") || \ (@trapType == "Glyph Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Harpoon Curve") || (@trapType == "Hoops & Plates") || \ (@trapType == "Horned Torus Curve") || \ (@trapType == "Intersecting Ovals") || \ (@trapType == "M Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Omega Curve") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || \ (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thorned Cross") || \ (@trapType == "Three Point Curve") || (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "Bean Curve") || \ (@trapType == "Bicorn Curve") || (@trapType == "Bicuspid Curve") || \ (@trapType == "Bifoliate") || (@trapType == "Bifolium") || \ (@trapType == "Bow") || (@trapType == "Cassini Ovals") || \ (@trapType == "Circle") || \ (@trapType == "Cissoid of Diocles") || (@trapType == "Cochleoid") || \ (@trapType == "Cocked Hat") || (@trapType == "Conchoid of Nicomedes") || \ (@trapType == "Cruciform") || (@trapType == "Devil's Curve") || \ (@trapType == "Dumbbell Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Eight Curve") || \ (@trapType == "Happy Accident") || \ (@trapType == "Hyperbola") || (@trapType == "Kappa Curve") || \ (@trapType == "Keppler's Folium") || (@trapType == "Keratoid Cusp") || \ (@trapType == "Lemniscate") || (@trapType == "Lemniscate Corrected") || \ (@trapType == "Limacon") || \ (@trapType == "Links Curve") || (@trapType == "Maltese Cross Curve") || \ (@trapType == "Pear-Shaped Curve") || (@trapType == "Piriform") || \ (@trapType == "Quadrifolium") || (@trapType == "Rose Curve") || \ (@trapType == "Serpentine Curve") || \ (@trapType == "Sinus + Cosinus") || (@trapType == "Spiral") || \ (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || (@trapType == "Tangent") || \ (@trapType == "Trefoil") || \ (@trapType == "Trident") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium") || (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross") || \ (@trapType == "Witch of Agnesi")) endparam float param shapeAdjust5 caption = "Shape Adj. V" default = 1.0 hint = "Shape adjustment parameter V." visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Cabuchon Curve") || \ (@trapType == "Chaos Adorned") || (@trapType == "Chaos Unleashed") || \ (@trapType == "Compass Curve") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve")||\ (@trapType == "Cooking Pot Curve") || (@trapType == "Crochet Hooks") || \ (@trapType == "Double Circle Curve") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Intersecting Ovals") || (@trapType == "Mercury Curve") || \ (@trapType == "Miscellanea") || (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Ornate Curve") || (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || (@trapType == "Simple Curve") || \ (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || \ (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Taurus Curve") || \ (@trapType == "Teardrop Curve") || (@trapType == "Tennis Anyone?") || \ (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "Bean Curve") || \ (@trapType == "Bifoliate") || (@trapType == "Bifolium") || \ (@trapType == "Cassini Ovals") || \ (@trapType == "Cissoid of Diocles") || (@trapType == "Cochleoid") || \ (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || \ (@trapType == "Cruciform") || (@trapType == "Devil's Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Happy Accident") || \ (@trapType == "Kappa Curve") || (@trapType == "Keppler's Folium") || \ (@trapType == "Lemniscate") || (@trapType == "Lemniscate Corrected") || \ (@trapType == "Limacon") || \ (@trapType == "Links Curve") || (@trapType == "Maltese Cross Curve") || \ (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || \ (@trapType == "Quadrifolium") || (@trapType == "Sinus + Cosinus") || \ (@trapType == "Spiral") || (@trapType == "Strange Shape") || \ (@trapType == "Trefoil") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium") || (@trapType == "Trisectrix of Maclaurin")) endparam float param shapeAdjust6 caption = "Shape Adj. VI" default = 1.0 hint = "Shape adjustment parameter VI." visible = @adv1 && \ ((@trapType == "Bighorn Curve") || \ (@trapType == "Cabuchon Curve") || (@trapType == "Chaos Unleashed") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve")||\ (@trapType == "Cooking Pot Curve") || \ (@trapType == "Double Circle Curve") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || \ (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Intersecting Ovals") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || (@trapType == "Nested Ovals") || \ (@trapType == "Odds 'n Ends") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Stretched Oval Curve") || (@trapType == "Taurus Curve") || \ (@trapType == "Teardrop Curve") || (@trapType == "Tennis Anyone?") || \ (@trapType == "Tsuba Curve") || (@trapType == "Wheel in Trough") || \ (@trapType == "Ampersand Curve") || (@trapType == "Bean Curve") || \ (@trapType == "Cochleoid") || (@trapType == "Cocked Hat") || \ (@trapType == "Cruciform") || (@trapType == "Devil's Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Happy Accident") || \ (@trapType == "Keppler's Folium") || \ (@trapType == "Lemniscate Corrected") || \ (@trapType == "Limacon") || (@trapType == "Maltese Cross Curve") || \ (@trapType == "Spiral") || (@trapType == "Strange Shape") || \ (@trapType == "Trefoil") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium")) endparam float param shapeAdjust7 caption = "Shape Adj. VII" default = 1.0 hint = "Shape adjustment parameter VII." visible = @adv1 && \ ((@trapType == "Bighorn Curve") || \ (@trapType == "Cabuchon Curve") || (@trapType == "Chaos Unleashed") || \ (@trapType == "Conductor's Curve") || (@trapType == "Driftwood Curve") || \ (@trapType == "Eye of the Needle") || (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || \ (@trapType == "Odds 'n Ends") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Pincers") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Taurus Curve") || \ (@trapType == "Teardrop Curve") || (@trapType == "Tennis Anyone?") || \ (@trapType == "Wheel in Trough") || \ (@trapType == "Ampersand Curve") || (@trapType == "Dürer's Conchoid") || \ (@trapType == "Happy Accident") || (@trapType == "Keppler's Folium") || \ (@trapType == "Lemniscate Corrected") || (@trapType == "Limacon") || \ (@trapType == "Strange Shape") || \ (@trapType == "Trefoil") || (@trapType == "Trifolium")) endparam float param shapeAdjust8 caption = "Shape Adj. VIII" default = 1.0 hint = "Shape adjustment parameter VIII." visible = @adv1 && \ ((@trapType == "Conductor's Curve") || \ (@trapType == "Driftwood Curve") || (@trapType == "Eye of the Needle") || \ (@trapType == "Glyph Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Mousehead Curve") || (@trapType == "Nesting Birds Curve") || \ (@trapType == "Odds 'n Ends") || (@trapType == "Ornate Curve") || \ (@trapType == "Pacifier Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Ampersand Curve") || (@trapType == "Dürer's Conchoid") || \ (@trapType == "Keppler's Folium") || \ (@trapType == "Strange Shape") || (@trapType == "Trifolium")) endparam float param shapeAdjust9 caption = "Shape Adj. IX" default = 1.0 hint = "Shape adjustment parameter IX." visible = @adv1 && \ ((@trapType == "Driftwood Curve") || (@trapType == "Eye of the Needle") || \ (@trapType == "Glyph Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Mousehead Curve") || \ (@trapType == "Odds 'n Ends") || (@trapType == "Ornate Curve") || \ (@trapType == "Dürer's Conchoid") || \ (@trapType == "Keppler's Folium")) endparam float param shapeAdjust10 caption = "Shape Adj. X" default = 1.0 hint = "Shape adjustment parameter X." visible = @adv1 && \ ((@trapType == "Driftwood Curve") || (@trapType == "Eye of the Needle") || \ (@trapType == "Miscellanea") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Ornate Curve") || (@trapType == "Dürer's Conchoid")) endparam float param shapeAdjust11 caption = "Shape Adj. XI" default = 1.0 hint = "Shape adjustment parameter XI." visible = @adv1 && ((@trapType == "Driftwood Curve") || \ (@trapType == "Miscellanea") || (@trapType == "Dürer's Conchoid")) endparam float param shapeAdjust12 caption = "Shape Adj. XII" default = 1.0 hint = "Shape adjustment parameter XII." visible = @adv1 && (@trapType == "Dürer's Conchoid") endparam float param distort caption = "Fission" hint = "Generally stretches and splits the elements" default = 0 visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || (@trapType == "Barbed Wire") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Bird of Paradise") || \ (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || (@trapType == "Church Key Curve") || \ (@trapType == "Compass Curve") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve") || \ (@trapType == "Cooking Pot Curve") || \ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "Crosshatch Curve") || (@trapType == "D&U Curve") || \ (@trapType == "Dogleg Curve") || (@trapType == "Double Circle Curve") || \ (@trapType == "Double Trine") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || \ (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || \ (@trapType == "Floreate Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Hook & Spar") || \ (@trapType == "Hoops & Plates") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Indented Parabola") || \ (@trapType == "Intersecting Ovals") || (@trapType == "Leaves of Grass") || \ (@trapType == "Lipped Ovals") || (@trapType == "M Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Omega Curve") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || \ (@trapType == "Spiked Cusp") || (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thick 'n Thin") || \ (@trapType == "Thorned Cross") || (@trapType == "Three Point Curve") || \ (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "ArcTangent") || \ (@trapType == "Bean Curve") || (@trapType == "Bicorn Curve") || \ (@trapType == "Bicuspid Curve") || (@trapType == "Bifoliate") || \ (@trapType == "Bifolium") || \ (@trapType == "Bow") || \ (@trapType == "Butterfly Curve") || \ (@trapType == "Cassini Ovals") || \ (@trapType == "Circle") || \ (@trapType == "Cissoid of Diocles") || (@trapType == "Cochleoid") || \ (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || \ (@trapType == "Cruciform") || \ (@trapType == "Devil's Curve") || (@trapType == "Diamond") || \ (@trapType == "Dumbbell Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Eight Curve") || \ (@trapType == "Happy Accident") || \ (@trapType == "Hyperbola") || \ (@trapType == "Kappa Curve") || (@trapType == "Keppler's Folium") || \ (@trapType == "Keratoid Cusp") || (@trapType == "Knot Curve") || \ (@trapType == "Lemniscate") || \ (@trapType == "Lemniscate Corrected") || (@trapType == "Limacon") || \ (@trapType == "Line") || (@trapType == "Links Curve") || \ (@trapType == "Maltese Cross Curve") || \ (@trapType == "Parabola") || (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || \ (@trapType == "Quadrifolium") || \ (@trapType == "Rose Curve") || \ (@trapType == "Serpentine Curve") || \ (@trapType == "sin(x)/x") || \ (@trapType == "Sinus + Cosinus") || \ (@trapType == "Square") || (@trapType == "Stirrup Curve") || \ (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || \ (@trapType == "Tangent") || \ (@trapType == "Trefoil") || (@trapType == "Trident") || \ (@trapType == "Trident of Descartes") || (@trapType == "Trifolium") || \ (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross") || \ (@trapType == "Witch of Agnesi")) endparam float param distort2 caption = "Fission 2" hint = "Shifts some of the lines in 'Square'" default = 0 visible = @adv1 && (@trapType == "Square") endparam func fn1 default = abs () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || (@trapType == "Barbed Wire") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Bird of Paradise") || \ (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || (@trapType == "Church Key Curve") || \ (@trapType == "Compass Curve") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve")||\ (@trapType == "Cooking Pot Curve") || \ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "Crosshatch Curve") || (@trapType == "D&U Curve") || \ (@trapType == "Dogleg Curve") || \ (@trapType == "Double Circle Curve") || \ (@trapType == "Double Trine") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || \ (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || \ (@trapType == "Floreate Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Hook & Spar") || \ (@trapType == "Hoops & Plates") || \ (@trapType == "Horned Torus Curve") || \ (@trapType == "Indented Parabola") || \ (@trapType == "Intersecting Ovals") || \ (@trapType == "Leaves of Grass") || (@trapType == "Lipped Ovals") || \ (@trapType == "M Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Omega Curve") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || (@trapType == "Spiked Cusp") || \ (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thick 'n Thin") || \ (@trapType == "Thorned Cross") || (@trapType == "Three Point Curve") || \ (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "ArcTangent") || \ (@trapType == "Bean Curve") || (@trapType == "Bicorn Curve") || \ (@trapType == "Bicuspid Curve") || (@trapType == "Bifoliate") || \ (@trapType == "Bifolium") || \ (@trapType == "Bow") || \ (@trapType == "Butterfly Curve") || \ (@trapType == "Cassini Ovals") || \ (@trapType == "Circle") || \ (@trapType == "Cissoid of Diocles") || (@trapType == "Cochleoid") || \ (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || \ (@trapType == "Cruciform") || \ (@trapType == "Devil's Curve") || (@trapType == "Diamond") || \ (@trapType == "Dumbbell Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Eight Curve") || \ (@trapType == "Happy Accident") || \ (@trapType == "Hyperbola") || \ (@trapType == "Kappa Curve") || (@trapType == "Keppler's Folium") || \ (@trapType == "Keratoid Cusp") || (@trapType == "Knot Curve") || \ (@trapType == "Lemniscate") || \ (@trapType == "Lemniscate Corrected") || (@trapType == "Limacon") || \ (@trapType == "Line") || (@trapType == "Links Curve") || \ (@trapType == "Maltese Cross Curve") || \ (@trapType == "Parabola") || (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || \ (@trapType == "Quadrifolium") || \ (@trapType == "Rose Curve") || \ (@trapType == "Serpentine Curve") || \ (@trapType == "sin(x)/x") || \ (@trapType == "Sinus + Cosinus") || \ (@trapType == "Square") || (@trapType == "Stirrup Curve") || \ (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || \ (@trapType == "Tangent") || \ (@trapType == "Trefoil") || (@trapType == "Trident") || \ (@trapType == "Trident of Descartes") || (@trapType == "Trifolium") || \ (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross") || \ (@trapType == "Witch of Agnesi")) endfunc func fn2 default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || (@trapType == "Barbed Wire") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Bird of Paradise") ||\ (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || (@trapType == "Church Key Curve") || \ (@trapType == "Compass Curve") || (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve") || \ (@trapType == "Cooking Pot Curve")||\ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "Crosshatch Curve") || (@trapType == "D&U Curve") || \ (@trapType == "Dogleg Curve") || (@trapType == "Double Circle Curve") || \ (@trapType == "Double Trine") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || \ (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || \ (@trapType == "Floreate Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Hook & Spar") || \ (@trapType == "Hoops & Plates") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Indented Parabola") || \ (@trapType == "Intersecting Ovals") || \ (@trapType == "Leaves of Grass") || \ (@trapType == "Lipped Ovals") || \ (@trapType == "M Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || \ (@trapType == "Mousehead Curve") || (@trapType == "Nesting Birds Curve") || \ (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Omega Curve") || (@trapType == "Ornate Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || \ (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || (@trapType == "Spiked Cusp") || \ (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thick 'n Thin") || \ (@trapType == "Thorned Cross") || \ (@trapType == "Three Point Curve") || (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || \ (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "ArcTangent") || \ (@trapType == "Bean Curve") || (@trapType == "Bicorn Curve") || \ (@trapType == "Bicuspid Curve") || (@trapType == "Bifoliate") || \ (@trapType == "Bifolium") || \ (@trapType == "Bow") || \ (@trapType == "Butterfly Curve") || \ (@trapType == "Cassini Ovals") || \ (@trapType == "Circle") || \ (@trapType == "Cissoid of Diocles") || (@trapType == "Cochleoid") || \ (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || \ (@trapType == "Cruciform") || \ (@trapType == "Devil's Curve") || (@trapType == "Diamond") || \ (@trapType == "Dumbbell Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Eight Curve") || \ (@trapType == "Happy Accident") || \ (@trapType == "Hyperbola") || \ (@trapType == "Kappa Curve") || (@trapType == "Keppler's Folium") || \ (@trapType == "Keratoid Cusp") || (@trapType == "Knot Curve") || \ (@trapType == "Lemniscate") || \ (@trapType == "Lemniscate Corrected") || (@trapType == "Limacon") || \ (@trapType == "Links Curve") || \ (@trapType == "Maltese Cross Curve") || \ (@trapType == "Parabola") || \ (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || \ (@trapType == "Quadrifolium") || (@trapType == "Rose Curve") || \ (@trapType == "Serpentine Curve") || \ (@trapType == "sin(x)/x") || (@trapType == "Sinus + Cosinus") || \ (@trapType == "Square") || \ (@trapType == "Stirrup Curve") || (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || (@trapType == "Tangent") || \ (@trapType == "Trefoil") || \ (@trapType == "Trident") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium") || (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross") || \ (@trapType == "Witch of Agnesi")) endfunc func fn3 default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || (@trapType == "Barbed Wire") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Bird of Paradise") || \ (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || (@trapType == "Church Key Curve") || \ (@trapType == "Compass Curve") || (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve") || \ (@trapType == "Cooking Pot Curve")||\ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "Crosshatch Curve") || (@trapType == "D&U Curve") || \ (@trapType == "Dogleg Curve") || \ (@trapType == "Double Circle Curve") || \ (@trapType == "Double Trine") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || \ (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || \ (@trapType == "Floreate Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Hook & Spar") || \ (@trapType == "Hoops & Plates") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Indented Parabola") || \ (@trapType == "Intersecting Ovals") || \ (@trapType == "Leaves of Grass") || \ (@trapType == "Lipped Ovals") || \ (@trapType == "M Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || \ (@trapType == "Mousehead Curve") || (@trapType == "Nesting Birds Curve") || \ (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Omega Curve") || (@trapType == "Ovals") || \ (@trapType == "Ornate Curve") || (@trapType == "Ovate Waves") || \ (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || (@trapType == "Simple Curve") || \ (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || (@trapType == "Spiked Cusp") || \ (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thick 'n Thin") || \ (@trapType == "Thorned Cross") || \ (@trapType == "Three Point Curve") || (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || \ (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "ArcTangent") || \ (@trapType == "Bean Curve") || (@trapType == "Bicorn Curve") || \ (@trapType == "Bicuspid Curve") || (@trapType == "Bifoliate") || \ (@trapType == "Bifolium") || \ (@trapType == "Bow") || \ (@trapType == "Butterfly Curve") || \ (@trapType == "Cassini Ovals") || \ (@trapType == "Circle") || \ (@trapType == "Cissoid of Diocles") || (@trapType == "Cochleoid") || \ (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || \ (@trapType == "Cruciform") || \ (@trapType == "Devil's Curve") || (@trapType == "Diamond") || \ (@trapType == "Dumbbell Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Eight Curve") || \ (@trapType == "Happy Accident") || \ (@trapType == "Hyperbola") || \ (@trapType == "Kappa Curve") || (@trapType == "Keppler's Folium") || \ (@trapType == "Keratoid Cusp") || (@trapType == "Knot Curve") || \ (@trapType == "Lemniscate") || \ (@trapType == "Lemniscate Corrected") || (@trapType == "Limacon") || \ (@trapType == "Links Curve") || \ (@trapType == "Maltese Cross Curve") || \ (@trapType == "Parabola") || \ (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || \ (@trapType == "Quadrifolium") || (@trapType == "Rose Curve") || \ (@trapType == "Serpentine Curve") || \ (@trapType == "sin(x)/x") || (@trapType == "Sinus + Cosinus") || \ (@trapType == "Square") || \ (@trapType == "Stirrup Curve") || (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || (@trapType == "Tangent") || \ (@trapType == "Trefoil") || \ (@trapType == "Trident") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium") || (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross") || \ (@trapType == "Witch of Agnesi")) endfunc func fn4 default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 &&\ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || \ (@trapType == "Barbed Wire") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Binary Curve") || (@trapType == "Bird of Paradise") || \ (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || (@trapType == "Chaos Unleashed") || \ (@trapType == "Church Key Curve") || (@trapType == "Compass Curve") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve")||\ (@trapType == "Cooking Pot Curve") || \ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "Crosshatch Curve") || \ (@trapType == "D&U Curve") || (@trapType == "Dogleg Curve") || \ (@trapType == "Double Circle Curve") || (@trapType == "Double Trine") || \ (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || \ (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || (@trapType == "Floreate Curve") || \ (@trapType == "Glyph Curve") || (@trapType == "Gravity Waves") || \ (@trapType == "Harpoon Curve") || \ (@trapType == "Hook & Spar") || (@trapType == "Hoops & Plates") || \ (@trapType == "Horned Torus Curve") || \ (@trapType == "Indented Parabola") || \ (@trapType == "Intersecting Ovals") || (@trapType == "Leaves of Grass") || \ (@trapType == "M Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Moorish Fantasy") || (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || \ (@trapType == "Nested Ovals") || (@trapType == "O-nami Curve") || \ (@trapType == "Odds 'n Ends") || (@trapType == "Omega Curve") || \ (@trapType == "Ovals") || \ (@trapType == "Ornate Curve") || (@trapType == "Ovate Waves") || \ (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || \ (@trapType == "Simple Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || \ (@trapType == "Spiked Cusp") || (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || \ (@trapType == "Swallow Curve") || (@trapType == "Switchback Curve") || \ (@trapType == "Taurus Curve") || (@trapType == "Teardrop Curve") || \ (@trapType == "Tennis Anyone?") || (@trapType == "Thick 'n Thin") || \ (@trapType == "Thorned Cross") || \ (@trapType == "Three Point Curve") || (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || \ (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "Bean Curve") || \ (@trapType == "Bicorn Curve") || (@trapType == "Bicuspid Curve") || \ (@trapType == "Bifoliate") || (@trapType == "Bifolium") || \ (@trapType == "Bow") || (@trapType == "Butterfly Curve") || \ (@trapType == "Cassini Ovals") || (@trapType == "Cissoid of Diocles") || \ (@trapType == "Cochleoid") || (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || (@trapType == "Cruciform") || \ (@trapType == "Devil's Curve") || (@trapType == "Dumbbell Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Eight Curve") || \ (@trapType == "Happy Accident") || (@trapType == "Kappa Curve") || \ (@trapType == "Keppler's Folium") || \ (@trapType == "Keratoid Cusp") || (@trapType == "Knot Curve") || \ (@trapType == "Lemniscate") || \ (@trapType == "Lemniscate Corrected") || (@trapType == "Limacon") || \ (@trapType == "Links Curve") || (@trapType == "Maltese Cross Curve") || \ (@trapType == "Pear-Shaped Curve") || \ (@trapType == "Piriform") || \ (@trapType == "Quadrifolium") || \ (@trapType == "Serpentine Curve") || \ (@trapType == "sin(x)/x") || \ (@trapType == "Sinus + Cosinus") || \ (@trapType == "Square") || (@trapType == "Stirrup Curve") || \ (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || \ (@trapType == "Trefoil") || \ (@trapType == "Trident") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium") || (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross")) endfunc func fn5 caption = "Function 5" default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Bad Hair Day") || (@trapType == "Baubles & Bangles") || \ (@trapType == "Bighorn Curve") || (@trapType == "Cabuchon Curve") || \ (@trapType == "Cardinal Points Curve") || \ (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || \ (@trapType == "Compass Curve") || (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve") || \ (@trapType == "Cooking Pot Curve")||\ (@trapType == "Cosmic Rays") || (@trapType == "Crochet Hooks") || \ (@trapType == "Double Circle Curve") || \ (@trapType == "Double Trine") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || (@trapType == "Exclamation Point") || \ (@trapType == "Fatback") || (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Intersecting Ovals") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || \ (@trapType == "Nested Ovals") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Ornate Curve") || (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || \ (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Seagull Curve") || (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Spectacles Curve") || \ (@trapType == "Squared Circle Curve") || \ (@trapType == "Squeezed Rectangle Curve") || \ (@trapType == "Stretched Oval Curve") || (@trapType == "Swallow Curve") || \ (@trapType == "Taurus Curve") || \ (@trapType == "Teardrop Curve") || (@trapType == "Tennis Anyone?") || \ (@trapType == "Thorned Cross") || (@trapType == "Tsuba Curve") || \ (@trapType == "Wheel in Trough") || (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") || \ (@trapType == "Bean Curve") || (@trapType == "Bicorn Curve") || \ (@trapType == "Bifoliate") || (@trapType == "Bifolium") || \ (@trapType == "Bow") || (@trapType == "Cissoid of Diocles") || \ (@trapType == "Cochleoid") || (@trapType == "Cocked Hat") || \ (@trapType == "Conchoid of Nicomedes") || (@trapType == "Cruciform") || \ (@trapType == "Devil's Curve") || (@trapType == "Dürer's Conchoid") || \ (@trapType == "Happy Accident") || (@trapType == "Kappa Curve") || \ (@trapType == "Keppler's Folium") || (@trapType == "Keratoid Cusp") || \ (@trapType == "Lemniscate") || (@trapType == "Lemniscate Corrected") || \ (@trapType == "Limacon") || (@trapType == "Links Curve") || \ (@trapType == "Maltese Cross Curve") || (@trapType == "Quadrifolium") || \ (@trapType == "Stirrup Curve") || (@trapType == "Strange Shape") || \ (@trapType == "Swastika Curve") || \ (@trapType == "Trefoil") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium") || (@trapType == "Trisectrix of Maclaurin") || \ (@trapType == "Twisted Cross")) endfunc func fn6 caption = "Function 6" default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Alien Waves") || \ (@trapType == "Baubles & Bangles") || (@trapType == "Bighorn Curve") || \ (@trapType == "Cabuchon Curve") || (@trapType == "Chaos Adorned") || \ (@trapType == "Chaos Unleashed") || \ (@trapType == "Conductor's Curve") || \ (@trapType == "Conjoined Circle Curve")|| \ (@trapType == "Double Circle Curve") || (@trapType == "Dribs & Drabs") || \ (@trapType == "Driftwood Curve") || (@trapType == "Dulcimer Curve") || \ (@trapType == "Eye of the Needle") || (@trapType == "Glyph Curve") || \ (@trapType == "Harpoon Curve") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || \ (@trapType == "O-nami Curve") || (@trapType == "Odds 'n Ends") || \ (@trapType == "Ornate Curve") || (@trapType == "Ovals") || \ (@trapType == "Ovate Waves") || \ (@trapType == "Ovate Waves 2") || \ (@trapType == "Pacifier Curve") || (@trapType == "Parenthetical Curve") || \ (@trapType == "Pincers") || \ (@trapType == "Pisces Curve") || \ (@trapType == "Plane & Tail") || (@trapType == "Plane & Tail 2") || \ (@trapType == "Smoke Rings") || \ (@trapType == "Sneering Curve") || (@trapType == "Space Debris") || \ (@trapType == "Stretched Oval Curve") || (@trapType == "Swallow Curve") || \ (@trapType == "Taurus Curve") || \ (@trapType == "Teardrop Curve") || (@trapType == "Tennis Anyone?") || \ (@trapType == "Wheel in Trough") || \ (@trapType == "Whip Curve") || \ (@trapType == "Ampersand Curve") ||(@trapType == "Bean Curve") || \ (@trapType == "Cochleoid") || (@trapType == "Dürer's Conchoid") || \ (@trapType == "Happy Accident") || (@trapType == "Keppler's Folium") || \ (@trapType == "Lemniscate Corrected") || \ (@trapType == "Limacon") || (@trapType == "Links Curve") || \ (@trapType == "Maltese Cross Curve") || (@trapType == "Stirrup Curve") || \ (@trapType == "Strange Shape") || \ (@trapType == "Trefoil") || (@trapType == "Trident of Descartes") || \ (@trapType == "Trifolium")) endfunc func fn7 caption = "Function 7" default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Bighorn Curve")|| (@trapType == "Conductor's Curve") || \ (@trapType == "Driftwood Curve") || (@trapType == "Eye of the Needle") || \ (@trapType == "Glyph Curve") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || \ (@trapType == "Odds 'n Ends") || (@trapType == "Ornate Curve") || \ (@trapType == "Pacifier Curve") || (@trapType == "Sneering Curve") || \ (@trapType == "Ampersand Curve") || (@trapType == "Bean Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Keppler's Folium") || \ (@trapType == "Lemniscate Corrected") || \ (@trapType == "Maltese Cross Curve")||\ (@trapType == "Trefoil") || (@trapType == "Trifolium")) endfunc func fn8 caption = "Function 8" default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Bighorn Curve")|| (@trapType == "Conductor's Curve") || \ (@trapType == "Driftwood Curve") || (@trapType == "Eye of the Needle") || \ (@trapType == "Glyph Curve") || (@trapType == "Horned Torus Curve") || \ (@trapType == "Mercury Curve") || (@trapType == "Miscellanea") || \ (@trapType == "Mousehead Curve") || \ (@trapType == "Nesting Birds Curve") || \ (@trapType == "Odds 'n Ends") || (@trapType == "Ornate Curve") || \ (@trapType == "Pacifier Curve") || (@trapType == "Sneering Curve") || \ (@trapType == "Ampersand Curve") || \ (@trapType == "Dürer's Conchoid") || (@trapType == "Keppler's Folium") || \ (@trapType == "Trefoil") || (@trapType == "Trifolium")) endfunc func fn9 caption = "Function 9" default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Conductor's Curve")||(@trapType == "Eye of the Needle")||\ (@trapType == "Miscellanea") || (@trapType == "Nesting Birds Curve") || \ (@trapType == "Odds 'n Ends") || (@trapType == "Ornate Curve") || \ (@trapType == "Pacifier Curve") || (@trapType == "Sneering Curve") || \ (@trapType == "Dürer's Conchoid")) endfunc func fn10 caption = "Function 10" default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && \ ((@trapType == "Miscellanea") || (@trapType == "Dürer's Conchoid")) endfunc func fn11 caption = "Function 11" default = ident () hint = "Changes the shapes of the elements and their relations to each other" visible = @adv1 && (@trapType == "Dürer's Conchoid") endfunc heading caption = "Global Parameters" visible = (@c == (0,0) && @rot == 0 && @size == 1 && @rat == 1 \ && @skip1 == 0 && @skip2 == 100000000 && @power == .01 && \ @power3 == 1 && @trpp == 0) endheading heading caption = "Global Parameters [active]" visible = (@c != (0,0) || @rot != 0 || @size != 1 || @rat != 1 || \ @skip1 != 0 || @skip2 != 100000000 || @power != .01 || \ @power3 != 1 || @trpp != 0) endheading param adv2 caption = "Global Parameters" default = true endparam complex param c caption = "Center" default = (0.0,0.0) visible = @adv2 endparam float param rot caption = "Rotation" default = 0.0 visible = @adv2 endparam float param size caption = "Size" default = 1.0 visible = @adv2 endparam float param rat caption = "Ratio Width/Heigh" default = 1.0 visible = @adv2 endparam int param skip1 caption = "Start Iteration" default = 0 hint = "Indicates the number of the iteration where trapping \ will start. Can be used in conjunction with the next \ param to display any number of consecutive iters at any position." endparam int param skip2 caption = "Max Iterations" default = 100000 hint = "Indicates the maximum number of iterations that \ can be displayed, starting from the outermost. \ Can be used in conjuction with the last param to \ display any number of consecutive iters at any position." endparam bool param trapalliterations caption = "Limited Iterations" default = false hint = "Allows selectable blocks of iterations \ to be trapped and others skipped in a repeating pattern." endparam int param trapskip caption = "Iters to Trap [*skip]" default = 3 min = 1 hint = "This is the number of iterations to show for traps \ in a single block. When the 'Reverse Trapped/Skipped \ Iters' param is unchecked this becomes the number \ of iterations to hide." visible = @trapalliterations == true endparam int param trapiter caption = "Iters to Skip [*trap]" default = 3 min = 1 hint = "This is the number of iterations to hide for traps \ in a single block. When the 'Reverse Trapped/Skipped \ Iters' param is unchecked this becomes the number \ of iterations to show." visible = @trapalliterations == true endparam int param pattern caption = "Pattern Repeat" default = 0 min = 0 hint = "This determines the number of times the \ blocks of trapped/skipped iters repeat, after which all \ further iters are skipped. If the 'Reverse Shown/Hidden \ Iters' param is checked, all further iters are instead \ shown after this number of repeats. A value of 0 creates \ infinite repeats" visible = @trapalliterations == true endparam bool param reverse caption = "*[Reverse Trapped/Skipped Iters]" default = false visible = @trapalliterations == true endparam $ifdef VER40 heading text = "*Checking this box reverses the function of \ the 'Iters to Trap' and 'Iters to Skip' \ params, as indicated in brackets in \ those params above." visible = @trapalliterations == true endheading $endif heading caption = "More Shaping Parameters" visible = (@expx ==(1,0) && @expy == (1,0) && @ppx == 0 && @ppy == 0 && \ @pshape == 0 && @a == (1,0) && @p1 == (1,0) && @p2 == (1,0) && @q1 == \ (1,0) && @q2 == (1,0) && @light == 0 && @lightype == false && @z1o == \ (0,0) && @z1s == (1,0) && @z1e == (1,0) && @diso == (0,0) && @diss == \ (1,0) && @dise == (1,0) && @varType == 0 && @opadd == 0 && @nuflav == \ false && @p0 == (0,0) && @q0 == (0,0) && @xtra1x == (0,0) && @xtra2x == \ (1,0) && @xtra3x == (1,0) && @xtra1y == (0,0) && @xtra2y == (1,0) && \ @xtra3y == (1,0)) endheading heading caption = "More Shaping Parameters [active]" visible = (@expx != (1,0) || @expy != (1,0) || @ppx != 0 || @ppy != 0 \ || @pshape != 0 || @a != (1,0) || @p0 != (0,0) || @p1 != (1,0) || \ @p2 != (1,0) || @q0 != (0,0) || @q1 != (1,0) || @q2 != (1,0) || \ @light != 0 || @lightype || @z1o != (0,0) || @z1s \ != (1,0) || @z1e != (1,0) || @diso != (0,0) || @diss != (1,0) || @dise \ != (1,0) || @varType != 0 || @opadd != 0 || @nuflav || @p0 \ !=(0,0) || @q0 != (0,0) || @xtra1x != (0,0) || @xtra2x != (1,0) || \ @xtra3x != (1,0) || @xtra1y != (0,0) || @xtra2y != (1,0) || \ @xtra3y != (1,0)) endheading param ssp caption = "More Shaping Parameters" default = false endparam heading caption = "Lighting" visible = @ssp endheading bool param seeLight caption = "Lighting Parameters" default = false visible = @ssp endparam int param light caption = "Lighting" enum = "normal""modulus""cabs""real""imag" default = 0 visible = @seeLight && @ssp endparam bool param lightype caption = "Change Lighting" default = false visible = @light != 0 && @seeLight && @ssp endparam func fnl1 caption = "Lighting Function 1" default = ident() visible = @light != 0 && @seeLight && @ssp endfunc func fnl2 caption = "Lighting Function 2" default = ident() visible = @light != 0 && @lightype && @seeLight && @ssp endfunc complex param z1o caption = "Light Offset" default = (0,0) visible = @seeLight && @ssp endparam complex param z1s caption = "Light Strength" default = (1,0) visible = @seeLight && @ssp endparam complex param z1e caption = "Light Power" default = (1,0) visible = @seeLight && @ssp endparam complex param diso caption = "Dist Offset" default = (0,0) visible = @seeLight && @ssp endparam complex param diss caption = "Dist Strength" default = (1,0) visible = @seeLight && @ssp endparam complex param dise caption = "Dist Power" default = (1,0) visible = @seeLight && @ssp endparam heading caption = "X/Y Shapers, etc." visible = @ssp endheading bool param seexy caption = "X/Y Shapers, etc." default = true visible = @ssp endparam int param varType caption = "X/Y Species" enum = "normal""modulus""atan2""real""imag" default = 0 visible = @ssp && @seexy endparam complex param p0 caption = "X Offset" default = (0,0) visible = @ssp && @seexy endparam complex param q0 caption = "Y Offset" default = (0,0) visible = @ssp && @seexy endparam complex param p1 caption = "X Strength" default = (1,0) visible = @ssp && @seexy endparam complex param q1 caption = "Y Strength" default = (1,0) visible = @ssp && @seexy endparam complex param p2 caption = "X Power" default = (1,0) visible = @ssp && @seexy endparam complex param q2 caption = "Y Power" default = (1,0) visible = @ssp && @seexy endparam int param opadd caption = "Extra X/Y" enum = "None""+(X+Y)""-(X+Y)""+(X-Y)""-(X-Y)""+(Y-X)""-(Y-X)""+(X*Y)"\ "-(X*Y)""+(X/Y)""-(X/Y)""+(Y/X)""-(Y/X)""+(X^Y)""-(X^Y)""+(Y^X)""-(Y^X)" default = 0 visible = @ssp && @seexy endparam func nufuncxtx caption = "Extra X Fn" default = sin() hint = "Varies the function associated with the X variable in the \ extra X/Y set." visible = @opadd > 0 && @ssp && @seexy endfunc func nufuncxty caption = "Extra Y Fn" default = sin() hint = "Varies the function associated with the Y variable in the \ extra X/Y set." visible = @opadd > 0 && @ssp && @seexy endfunc bool param nuflav caption = "Change Extra Y Fn Flavor" default = false visible = @opadd > 0 && @ssp && @seexy endparam complex param xtra1x caption = "Extra X Offset" default = (0,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @ssp && @seexy endparam complex param xtra1y caption = "Extra Y Offset" default = (0,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @ssp && @seexy endparam complex param xtra2x caption = "Extra X Strength" default = (1,0) hint = "Varies the strength in the extra X/Y set" visible = @opadd > 0 && @ssp && @seexy endparam complex param xtra2y caption = "Extra Y Strength" default = (1,0) hint = "Varies the strength in the extra X/Y set" visible = @opadd > 0 && @ssp && @seexy endparam complex param xtra3x caption = "Extra X Power" default = (1,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @ssp && @seexy endparam complex param xtra3y caption = "Extra Y Power" default = (1,0) hint = "Varies the offset in the extra X/Y set" visible = @opadd > 0 && @ssp && @seexy endparam param pshape caption = "Trap Style" enum = "normal""acosh""acos" default = 0 visible = @ssp && @seexy endparam complex param expx caption = "X Exponent" default = (1.0,0.0) visible = @ssp && @seexy endparam complex param expy caption = "Y Exponent" default = (1.0,0.0) visible = @ssp && @seexy endparam float param ppx caption = "X Twirl" default = 0.0 hint = "Changes the spatial relationships \ of the trapped elements." visible = @ssp && @seexy endparam float param ppy caption = "Y Twirl" default = 0.0 hint = "Changes the spatial relationships \ of the trapped elements." visible = @ssp && @seexy endparam complex param a caption = "Super Shaper 1" default = (1.0,0.0) visible = @ssp && @seexy endparam func fnx caption = "Global Z" default = ident () visible = @ssp && @seexy endfunc func fncx caption = "Global X" default = ident () visible = @ssp && @seexy endfunc func fncy caption = "Global Y" default = ident () visible = @ssp && @seexy endfunc func fnxx caption = "Trap X" default = ident () hint = "Applied to the final definition of X" visible = @ssp && @seexy endfunc func fnyy caption = "Trap Y" default = ident () hint = "Applied to the final definition of Y" visible = @ssp && @seexy endfunc heading caption = "Morph Parameters" visible = (@change == 0 && @exp1 == (1,0) && @exp2 == (1,0) && @exp1 == (1,0) \ && @tw == (0,0) && @tw2 == (0,0) && @tw3 == (0,0) && @th2 == false) endheading heading caption = "Morph Parameters [active]" visible = (@change != 0 || @exp1 != (1,0) || @exp2 != (1,0) || @exp1 != (1,0) \ || @tw != (0,0) || @tw2 != (0,0) || @tw3 != (0,0) || @th2) endheading param adv caption = "Morph Parameters" hint = "Additional shaping parameters and functions." default = false endparam param th2 caption = "Morph -> Morph II" default = false visible = @adv endparam param change caption = "Morph" enum = "1""2""3""4""5""6""7""8""9""10""11" default = 0 visible = @adv endparam param mmode caption = "Z1 Mode" enum = "z+|z|""z-|z|""|z|-z" default = 0 hint = "Defines relationship of z1 to z in 1st z block" visible = @adv && @th2 endparam param zchange1 caption = "Z1 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z1 variable " visible = @adv && @th2 endparam param mmode2 caption = "Z2 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z2 to z in 2nd z block" visible = @adv && @th2 && @change > 0 endparam param zchange2 caption = "Z2 type" enum = "|z|""atan2(z)""real(z)""imag(z)" default = 0 hint = "Determines the character of z2 variable " visible = @adv && @th2 && @change > 0 endparam param mmode3 caption = "Z3 Mode" enum = "z+|z|""z-|z|""|z|-z""z*|z|""z/|z|""|z|/z" default = 0 hint = "Defines relationship of z3 to z in 3rd z block" visible = @adv && @th2 && @change > 5 endparam param zchange3 caption = "Z3 type" enum = "|z|""atan2(z)""real(z)""imag(z)" hint = "Determines the character of z3 variable " default = 0 visible = @adv && @th2 && @change > 5 endparam complex param exp1 caption = "Bias 1" default = (1,0) visible = @adv endparam complex param exp3 caption = "Bias 2" default = (1,0) visible = @adv && @change > 0 endparam complex param exp2 caption = "Bias 3" default = (1,0) visible = @adv && @change > 5 endparam complex param exp4 caption = "Bias Z1" default = (1,0) visible = @th2 && @adv endparam complex param exp5 caption = "Bias Z2" default = (1,0) visible = @th2 && @adv && @change > 0 endparam complex param exp6 caption = "Bias Z3" default = (1,0) visible = @th2 && @adv && @change > 5 endparam complex param tw caption = "Twist 1" default = (0,0) visible = @adv endparam complex param tw2 caption = "Twist 2" default = (0,0) visible = @adv && @change > 0 endparam complex param tw3 caption = "Twist 3" default = (0,0) visible = @adv && @change > 5 endparam complex param tw4 caption = "Twist Z1" default = (0,0) visible = @th2 && @adv endparam complex param tw5 caption = "Twist Z2" default = (0,0) visible = @th2 && @adv && @change > 0 endparam complex param tw6 caption = "Twist Z3" default = (0,0) visible = @th2 && @adv && @change > 5 endparam param op caption = "Operator" enum = "+""-""*""/""^" default = 0 visible = @adv && @change > 5 endparam func nufunc caption = "Morph function 1" default = ident() visible = @adv endfunc func nufunc2 caption = "Morph function 2" default = ident () visible = @adv && @change > 0 endfunc func nufunc3 caption = "Morph function 3" default = ident () visible = @adv && @change > 5 endfunc func nufunc4 caption = "Morph function Z1" default = ident () visible = @th2 && @adv endfunc func nufunc5 caption = "Morph function Z2" default = zero () visible = @th2 && @adv && @change > 0 endfunc func nufunc6 caption = "Morph function Z3" default = zero () visible = @th2 && @adv && @change > 5 endfunc heading caption = "Masking" visible = (@msk == 0 && @msk2 == 0) endheading heading caption = "Masking [active]" visible = (@msk != 0 || @msk2 != 0) endheading param admsk caption = "Masking" default = false endparam float param msk caption = "Distance Mask" default = 0.0 visible = @admsk endparam param invt caption = "Invert Distance Mask" default = false visible = @admsk endparam float param msk2 caption = "Angle Mask" default = 0.0 hint = "An additional mask to be used with the \ 'Angle' coloring mode" visible = @admsk endparam param inv2 caption = "Invert Angle Mask" default = false hint = "An additional mask to be used with the \ 'Angle' coloring mode" visible = @admsk endparam heading caption = "Texture Parameters" visible = (@rnd == 0 && @fbmtxt == 0 && @decamt == 0 && @tp == 0 && \ @gnarl_amt == 0) endheading heading caption = "Texture Parameters [active]" visible = (@rnd != 0 || @fbmtxt != 0 || @decamt != 0 || @tp != 0 || \ @gnarl_amt != 0) endheading param advt caption = "Texture Parameters" default = false endparam float param txamt caption = "Overall Tx Percent" default = 100.0 hint = "Controls the amount of \ Random, fBm, Decimal, Popgnarl and Additional \ texture applied cumulatively." visible = @advt endparam float param rnd caption = "Random Tx Amount" default = 0.0 hint = "Adds Random texture" visible = @advt endparam heading caption = "fBm" visible = @advt && @fbmtxt == 0 endheading heading caption = "fBm [active]" visible = @advt && @fbmtxt != 0 endheading param advfbm caption = "fBm Texturing" default = false visible = @advt endparam float param fbmtxt caption = "fBm Tx Amount" default = 0.0 visible = @advt && @advfbm endparam param fbminit caption = "fBm Initialization" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advfbm endparam param ztyp4 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trapped z""Trapped #z" \ "Dist1 (Closest only)""Dist2 (Closest only)" default = 3 hint = "Determines which kind of 'z' variable is used in \ 'fBm Initialization' (when z is present). Textures created \ with 'Trap z' change with changes in the values of Morph and \ some global params, 'Morph z' only with Morph params and '#z' \ textures remain invariant. 'Trapped z' textures conform to \ element shapes and are affected by Morph values, 'Trapped #z' \ values conform but remain invariant. 'Dist'values work only in \ 'Closest' mode, work strangely, need a much higher value than \ other modes, and need the gradient adjusted. 'Dist1' is affected by \ the 'Function' and 'Style' params in 'Closest' while 'Dist2' is not." visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && \ @fbminit < 21) endparam func fntx8 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'fBm Initialization'" visible = @advt && @advfbm endfunc func fntx9 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'fBm Initialization'" visible = @advt && @advfbm endfunc func fbmrfn1 caption = "fBm Function 1" default = ident() hint = "Try changing this to achieve different fBm \ 'cloud' distribution and look" visible = @advt && @advfbm endfunc func fbmifn1 caption = "fBm Function 2" default = ident() hint = "Try changing this to achieve different fBm \ 'cloud' distribution and look" visible = @advt && @advfbm endfunc func fbmrfn2 caption = "Pattern Function 1" default = floor() hint = "Changing this often radically alters the look of the \ texture. With many functions--if they look 'grainy'--\ you will need to make the value of the 'Frequency' (real) \ param much smaller--on the order of .0000001. Experiment!" visible = @advt && @advfbm endfunc func fbmifn2 caption = "Pattern Function 2" default = floor() hint = "Changing this often radically alters the look of the \ texture. With many functions--if they look 'grainy'--\ you will need to make the value of the 'Frequency' (real) \ param much smaller--on the order of .0000001. Experiment!" visible = @advt && @advfbm endfunc float param tota caption = "Distribution 1" default = 1 visible = @advt && @advfbm endparam float param totb caption = "Distribution 2" default = 1 visible = @advt && @advfbm endparam float param totc caption = "Distribution 3" default = 1 visible = @advt && @advfbm endparam float param totd caption = "Distribution 4" default = 1 visible = @advt && @advfbm endparam complex param txia4 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && \ @fbminit < 21) endparam complex param txib4 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && \ @fbminit < 21) endparam complex param txic4 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advfbm && (@fbminit < 5 || @fbminit > 14 && \ @fbminit < 21) endparam complex param exad8 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'fBm Initialization'" visible = @advt && @advfbm endparam complex param exad9 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'fBm Initialization'" visible = @advt && @advfbm && !(@fbminit == 0 ||@fbminit == 5 || \ @fbminit == 6 || @fbminit == 21) endparam float param fbmscale caption = "fBm Scale" default = 1.0 visible = @advt && @advfbm endparam complex param fbmoffset caption = "fBm Offset" default = (0,0) visible = @advt && @advfbm endparam float param fbmangle caption = "fBm Rotation" default = 0.0 visible = @advt && @advfbm endparam float param fbmstep caption = "fBm Scale Step" default = 0.5 visible = @advt && @advfbm endparam float param fbmastep caption = "fBm Rotation Step" default = 37.0 visible = @advt && @advfbm endparam param fbmoct caption = "fBm Octaves" default = 7 min = 1 visible = @advt && @advfbm endparam float param fbmpower caption = "fBm Exponent" default = 2.0 visible = @advt && @advfbm endparam float param fbm_limit caption = "fBm Limit" default = 0.0 visible = @advt && @advfbm endparam bool param fbm_sgn caption = "Soften Texture" default = true visible = @advt && @advfbm endparam heading caption = "Decimal" visible = @advt && @decamt == 0 endheading heading caption = "Decimal [active]" visible = @advt && @decamt != 0 endheading param advd caption = "Decimal Texturing" default = false visible = @advt endparam float param decamt caption = "Decimal Tx Amount" default = 0.0 visible = @advt && @advd endparam param dec_init caption = "Decimal Initialisation" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advd endparam param ztyp2 caption = "Init z type" enum = "#z""Morph z""Trap z""Trapped z""Trapped #z" \ "Dist1 (Closest only)""Dist2 (Closest only)" default = 3 hint = "Determines which kind of 'z' variable is used in \ 'Decimal Initialization' (when z is present). Textures created \ with 'Trap z' change with changes in the values of Morph and \ some global params, 'Morph z' only with Morph params and '#z' \ textures remain invariant. 'Trapped z' textures conform to \ element shapes and are affected by Morph values, 'Trapped #z' \ values conform but remain invariant. 'Dist'values work only in \ 'Closest' mode, work strangely, need a much higher value than \ other modes, and need the gradient adjusted. 'Dist1' is affected by \ the 'Function' and 'Style' params in 'Closest' while 'Dist2' is not." visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam func fntx4 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Decimal Initialization'" visible = @advt && @advd endfunc func fntx5 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Decimal Initialization'" visible = @advt && @advd endfunc param dec_type caption = "Decimal Type" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advd endparam func fndec caption = "Type Function" default = atanh () hint = "Active when 'Decimal Type' = 'All Functions'" visible = @advt && @advd && @dec_type == 4 endfunc complex param txia2 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam complex param txib2 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam complex param txic2 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advd && (@dec_init < 5 || @dec_init > 14) endparam float param dec_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Decimal Type'" visible = @advt && @advd endparam float param dec_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present) defined in 'Decimal Type'" visible = @advt && @advd && @dec_type > 4 endparam float param dectxt caption = "Decimal Depth" default = 1.0 hint = "Changes the amount and to some extent \ the pattern of the texture." visible = @advt && @advd endparam float param dec_limit caption = "Decimal Limit" default = 2.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advd endparam complex param exad4 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 1st (or only) variable present defined in \ 'Decimal Initialization'" visible = @advt && @advd endparam complex param exad5 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture elements \ based on the 2nd variable (when present) defined in \ 'Decimal Initialization'" visible = @advt && @advd && !(@dec_init == 0 ||@dec_init == 5 || @dec_init == 6) endparam float param dec_size caption = "Decimal Size" default = 1.0 visible = @advt && @advd endparam param dec_sgn caption = "Apply Decimal Sign?" default = true visible = @advt && @advd endparam heading caption = "Popgnarl" visible = @advt && @gnarl_amt == 0 endheading heading caption = "Popgnarl [active]" visible = @advt && @gnarl_amt != 0 endheading param advpg caption = "Popgnarl Texturing" default = false visible = @advt endparam float param gnarl_amt caption = "Popgnarl Amount" default = 0.0 min = 0.0 visible = @advt && @advpg endparam param gnarl_init caption = "Popgnarl Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y""pixel" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advpg endparam param ztyp3 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trapped z""Trapped #z" \ "Dist1 (Closest only)""Dist2 (Closest only)" default = 3 hint = "Determines which kind of 'z' variable is used in \ 'Popgnarl Initialization' (when z is present). Textures created \ with 'Trap z' change with changes in the values of Morph and \ some global params, 'Morph z' only with Morph params and '#z' \ textures remain invariant. 'Trapped z' textures conform to \ element shapes and are affected by Morph values, 'Trapped #z' \ values conform but remain invariant. 'Dist'values work only in \ 'Closest' mode, work strangely, need a much higher value than \ other modes, and need the gradient adjusted. 'Dist1' is affected by \ the 'Function' and 'Style' params in 'Closest' while 'Dist2' is not." visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam func fntx6 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg endfunc func fntx7 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Popgnarl Initialization'" visible = @advt && @advpg endfunc complex param txia3 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param txib3 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param txic3 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advpg && (@gnarl_init < 5 || @gnarl_init > 14 && \ @gnarl_init < 21) endparam complex param exad6 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 1st (or only) variable defined in 'Popgnarl Initilaization'" visible = @advt && @advpg endparam complex param exad7 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the frequency of the texture by altering the value \ of the 2nd variable (when present) defined in 'Popgnarl Initilaization'" visible = @advt && @advpg && !(@gnarl_init == 0 || @gnarl_init == 5 || \ @gnarl_init == 6 || @gnarl_init == 21) endparam param gnarl_type caption = "Popgnarl Mode" enum = "real" "imag" "real+imag" "real*imag" "real-imag" \ "real/imag" "imag/real" "real^imag" "imag^real" \ "1/real" "1/imag" "angle" "magnitude" "arith. mean" \ "geom. mean" visible = @advt && @advpg endparam func fng caption = "Mode Function" default = abs() hint = "Acts on the variables in 'Popgnarl Mode'" visible = @advt && @advpg && @gnarl_type < 11 endfunc param gnarl_scaling caption = "Popgnarl Scaling" enum = "Ceil" "Floor" "Trunc" "Round""All Functions" \ "-Round-Ceil""-Round*Ceil""+Round*Ceil""-Round-Trunc" \ "-Round*Trunc""+Round*Trunc""-Trunc-Floor""-Trunc*Floor" \ "+Trunc*Floor""-Trunc-Ceil""-Trunc*Ceil""+Trunc*Ceil" \ "-Ceil-Floor""-Ceil*Floor""+Ceil*Floor" visible = @advt && @advpg endparam func fngnarl caption = "Scaling Function" default = atanh () visible = @advt && @advpg && @gnarl_scaling == 4 endfunc float param gnarl_scale caption = "Scale 1st Variable" default = 1.0 hint = "Changes the value of the 1st (or only) variable \ defined in 'Popgnarl Scaling'" visible = @advt && @advpg endparam float param gnarl_scale2 caption = "Scale 2nd Variable" default = 1.0 hint = "Changes the value of the 2nd variable \ (when present)defined in 'Popgnarl Scaling'" visible = @advt && @advpg && @gnarl_scaling > 4 endparam param gnarl_form caption = "Popgnarl Formula" enum = "gnarl" "popcorn" "popsicle" "tannous" "narlog" visible = @advt && @advpg endparam float param gnarl_limit caption = "Popgnarl Limit" default = 1.0 hint = "Limits the texture depth" min = 0.0 visible = @advt && @advpg endparam float param gnarl_size caption = "Popgnarl Size" default = 1.0 visible = @advt && @advpg endparam int param gnarl_octaves caption = "Popgnarl Octaves" default = 5 min = 1 visible = @advt && @advpg endparam heading caption = "Geometrix" visible = @advt && @trtxt == 0 endheading heading caption = "Geometrix [active]" visible = @advt && @trtxt != 0 endheading param advtr caption = "Geometrix Texturing" default = false visible = @advt endparam float param trtxt caption = "Geometrix Tx Amt" default = 0.0 visible = @advt && @advtr endparam param trinit caption = "Geometrix Init" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" hint = "Determines which variable(s) initialize(s) the texture" default = 0 visible = @advt && @advtr endparam param ztyp5 caption = "Choose z type" enum = "#z""Morph z""Trap z""Trapped z""Trapped #z" \ "Dist1 (Closest only)""Dist2 (Closest only)" default = 3 hint = "Determines which kind of 'z' variable is used in \ 'Popgnarl Initialization' (when z is present). Textures created \ with 'Trap z' change with changes in the values of Morph and \ some global params, 'Morph z' only with Morph params and '#z' \ textures remain invariant. 'Trapped z' textures conform to \ element shapes and are affected by Morph values, 'Trapped #z' \ values conform but remain invariant. 'Dist'values work only in \ 'Closest' mode, work strangely, need a much higher value than \ other modes, and need the gradient adjusted. 'Dist1' is affected by \ the 'Function' and 'Style' params in 'Closest' while 'Dist2' is not." visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam func fntx10 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr endfunc func fntx11 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in \ 'Geometrix Initialization'" visible = @advt && @advtr endfunc complex param trxia caption = "Pattern 1" default = (0.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param trxib caption = "Pattern 2" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param trxic caption = "Pattern 3" default = (1.0,0.0) visible = @advt && @advtr && (@trinit < 5 || @trinit > 14 && @trinit < 21) endparam complex param exad10 caption = "Frequency 1" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 1st (or only) \ variable defined in 'Geometrix Initialization'" visible = @advt && @advtr endparam complex param exad11 caption = "Frequency 2" default = (1.0,0.0) hint = "Changes the pattern frequency by acting on the 2nd variable \ (when present) defined in 'Geometrix Initialization'" visible = @advt && @advtr && !(@trinit == 0 ||@trinit == 5 || @trinit == 6 ||\ @trinit == 21) endparam float param exp caption = "Contrast" default = 1.0 visible = @advt && @advtr hint = "Higher values intensify the contrast between texture sections. If \ you find burned-out areas of texture try lowering this value" endparam float param scc caption = "Density" default = 1.0 hint = "Higher values create finer detail in the texture" visible = @advt && @advtr endparam float param trp1 caption = "Scale" default = 1 visible = @advt && @advtr hint = "Densest texture is at '1'. Try other values and increase the \ 'Density' value to achieve different texture patterns" endparam float param freq caption = "Definition 1" default = 10 visible = @advt && @advtr hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition and/or complexity" endparam float param trp2 caption = "Definition 2" default = .7 hint = "Works interactively with other 'Definition' params. Lower values \ yield more texture definition" visible = @advt && @advtr endparam float param trp3 caption = "Definition 3" default = .7 hint = "Works interactively with other 'Definition' params. Higher values \ yield more texture definition" visible = @advt && @advtr endparam float param shad1 caption = "Shading 1" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad2 caption = "Shading 2" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad3 caption = "Shading 3" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam float param shad4 caption = "Shading 4" default = 1 hint = "Affects the shading of certain areas of texture" visible = @advt && @advtr endparam func fnzr caption = "Z function 1" default = ident() visible = @advt && @advtr endfunc func fnzi caption = "Z function 2" default = ident() visible = @advt && @advtr endfunc func fn1tx caption = "Real function" default = sqrt() visible = @advt && @advtr endfunc func fn2tx caption = "Imag function" default = ident() visible = @advt && @advtr endfunc func fn3tx caption = "Overall function" default = asin() visible = @advt && @advtr endfunc float param geo_limit caption = "Geometrix Limit" default = 0.0 hint = "Low values limit texture contrast. Zero is 'off'" visible = @advt && @advtr endparam bool param geo_sgn caption = "Soften Texture" default = false visible = @advt && @advtr endparam heading caption = "Additional Texture" visible = @advt && @tp == 0 endheading heading caption = "Additional Texture [active]" visible = @advt && @tp != 0 endheading param advatx caption = "Additional Texturing" default = false visible = @advt endparam float param tp caption = "Add'l Tx Amount" hint = "'Blends' in texture" default = 0.0 visible = @advt && @advatx endparam param tt caption = "Add'l Tx Initialization" enum = "z""real+imag(z)""real-imag(z)""real*imag(z)""imag-real(z)" \ "x""y""x+y""x-y""y-x""x/y""x*y""y/x""x^y""y^x""x+z""x-z""z-x""x*z" \ "x/z""z/x""y+z""y-z""z-y""y*z""y/z""z/y" default = 0 hint = "Determines which variable(s) initialize(s) the texture" visible = @advt && @advatx endparam param ztyp caption = "Choose z type" enum = "#z""Morph z""Trap z""Trapped z""Trapped #z" \ "Dist1 (Closest only)""Dist2 (Closest only)" default = 3 hint = "Determines which kind of 'z' variable is used in \ 'Add'l Tx Initialization' (when z is present). Textures created \ with 'Trap z' change with changes in the values of Morph and \ some global params, 'Morph z' only with Morph params and '#z' \ textures remain invariant. 'Trapped z' textures conform to \ element shapes and are affected by Morph values, 'Trapped #z' \ values conform but remain invariant. 'Dist'values work only in \ 'Closest' mode, work strangely, need a much higher value than \ other modes, and need the gradient adjusted. 'Dist1' is affected by \ the 'Function' and 'Style' params in 'Closest' while 'Dist2' is not." visible = @advt && @advatx && (@tt < 5 || @tt > 14) endparam func fntx1 caption = "Init Function 1" default = ident() hint = "Modifies the 1st variable defined in \ 'Add'l Tx Initialization'" visible = @advt && @advatx endfunc func fntx2 caption = "Init Function 2" default = ident() hint = "Modifies the 2nd variable defined in\ 'Add'l Tx Initialization'" visible = @advt && @advatx endfunc func fntx3 caption = "Add'l Tx Function" default = trunc() visible = @advt && @advatx endfunc complex param txia1 caption = "Tx Pattern 1" default = (0.0,0.0) visible = @advt && @advatx && (@tt < 5 || @tt > 14) endparam complex param txib1 caption = "Tx Pattern 2" default = (1.0,0.0) visible = @advt && @advatx && (@tt < 5 || @tt > 14) endparam complex param txic1 caption = "Tx Pattern 3" default = (1.0,0.0) visible = @advt && @advatx && (@tt < 5 || @tt > 14) endparam complex param exad1 caption = "Frequency 1" default = (1.0,0.0) hint = "Determines the frequency of the pattern by acting on \ the 1st (or only) variable defined by 'Add'l Tx Initialization'" visible = @advt && @advatx endparam complex param exad2 caption = "Frequency 2" default = (1.0,0.0) hint = "Determines the frequency of the pattern by acting on \ the 2nd variable (when present) defined by 'Add'l Tx Initialization'" visible = @advt && @advatx && !(@tt == 0 ||@tt == 5 || @tt == 6) endparam float param tv caption = "Scale 1" hint = "This and the next parameter work together \ to determine the scale of the texture" default = 10.0 visible = @advt && @advatx endparam float param ts caption = "Scale 2" default = 2.0 visible = @advt && @advatx endparam float param tc caption = "Density" hint = "Works similarly to 'Color Density'. Positive \ numbers use division. Negative numbers use modulus, \ producing a slightly different effect." default = 5.0 visible = @advt && @advatx endparam float param r caption = "Randomness" default = 0.0 visible = @advt && @advatx endparam bool param add_sgn caption = "Soften Texture" default = true visible = @advt && @advatx endparam } jam/tm-trapestry-x { ; jam (begun 030518; V.1 finished 030603; V2 begun 030604) ; Toby: This version of trapestry is completely backward- ; compatible with Joe's original. I've added my Morph params ; to it, and in addition I have added one coloring option: ; "modulated iteraton" at the end of the "Color By?" param list. ; version 1.02, Mar. 2005 ; Generalized traps based on radial or parametric functions. ; One or two trap functions may be specified. If more than one trap ; is specified, they can be merged in various ways. ; Each of these traps may be defined either in polar coordinates, ; in which case a radius is calculated, or parametrically, in which case ; an x,y-coordinate pair is computed. Alternatively, one trap can be ; computed radially, the other parametrically. ; Regardless of the coordinate system(s) chosen, each radius, x-, or y- ; can be calculated using a variety of user-specified functions, or ; alternatively, using a set of up to four simple sine/cosine oscillators. ; TO TURN OFF A FUNCTION, set its scale to zero; ; TO TURN OFF AN OSCILLATOR SET, set the amplitude of its first oscillator to zero. ; These are the only methods (almost) to control whether you are using one or two traps. ; (If 'Blend' is enabled,you can also turn a trap off by setting its blend weight to zero. ; This method is less efficient computationally.) ; Using 'Blend' accomplishes nothing (except slowing down execution) unless ; at least one of the two weights is set != 1.0 ; Some functions are designated with an "(x)" or "(y)"; this designation is just ; to make it easier, when using parametric functions, to match up the correct ; formulas to generate the chosen trap shape, i.e., the first (x-coordinate) ; function should be set to the "(x)" formula, and the second (y-coord) formula ; set to the "(y)" function. ; Questions/comments to Joseph A. Maddry (maddry@sri.org) (Joe). global: ; Old variables moved to global ; Common constants float twopi = 2.0 * #pi float degconversion = twopi/360 float rfbcomp = 1-@rfblend, float ifbcomp = 1-@ifblend float rbbcomp = 1-@rbblend, float ibbcomp = 1-@ibblend float trapbcomp = 1-@trapblend, float initbcomp = 1-@initblend if @towatch == 0 int watch = #maxiter else int watch = @skippediters + @towatch endif ; towatch ; New variables ; Vars needed by the loop trapping routines bool twotraps = FALSE ; flag for trap combination routine int numberoffuncs = int numberofoscsets = 0 int trapfunc[4] ; points to selected function list members (trap functions) int texfunc[4] ; points to selected function list members (texture functions) float coeff[4,4,2] ; [parametric/polar function number, osc number, amplitude/frequency selector] float offset[4] ; this value is added to each r, x, or y equation float const[4,3] ; optional function parameters; function 1-4, constants 1, 2, and 3 bool oscselector[4,4] ; FALSE = cosine oscillator, TRUE = sine bool absoluteangle[4] ; FALSE = use raw angle argument, TRUE = use absolute value bool absoluteresult[4] ; FALSE = use raw trap function/osc result, TRUE = use absolute value ; Initialize the arrays int gtempindex1 = int gtempindex2 = 0 while gtempindex1 < 4 trapfunc[gtempindex1] = 0 texfunc[gtempindex1] = 0 offset[gtempindex1] = 0.0 const[gtempindex1,0] = 0.0 const[gtempindex1,1] = 0.0 const[gtempindex1,2] = 0.0 absoluteangle[gtempindex1] = FALSE absoluteresult[gtempindex1] = FALSE while gtempindex2 < 4 coeff[gtempindex1, gtempindex2, 0] = 0.0 coeff[gtempindex1, gtempindex2, 1] = 0.0 oscselector[gtempindex1, gtempindex2] = FALSE gtempindex2 = gtempindex2 + 1 endwhile ; gtempindex2 gtempindex1 = gtempindex1 + 1 endwhile ; gtempindex1 ; Fill in select array values with the user-chosen options if @coordtype == "Polar" ; compute a single radius, or two & combine them if @traptype == "functions" ; use polar functions to compute radii coeff[0,0,0] = @f1scale ; scale factor for the first function coeff[1,0,0] = @f2scale ; scale factor for the second function trapfunc[0] = @func1 ; list index for the first function trapfunc[1] = @func2 ; list index for the second function offset[0] = @f1offset ; radial offset ("min" value) for first function offset[1] = @f2offset ; radial offset ("min" value) for second function absoluteangle[0] = @f1absangle absoluteangle[1] = @f2absangle absoluteresult[0] = @f1absresult absoluteresult[1] = @f2absresult const[0,0] = @const1f1 ; optional first parameter for first function const[1,0] = @const1f2 ; optional first parameter for second function const[0,1] = @const2f1 ; optional second parameter for first function const[1,1] = @const2f2 ; optional second parameter for second function const[0,2] = @const3f1 ; optional third parameter for first function const[1,2] = @const3f2 ; optional third parameter for second function if @f2scale != 0.0 twotraps = TRUE numberoffuncs = 2 else numberoffuncs = 1 endif ; @f2scale numberofoscsets = 0 elseif @traptype == "oscillators" ; use a set of 4 oscillators to compute each radius coeff[0,0,0] = @osc11amp ; amplitude (scale) factor for the first oscillator of osc set 1 coeff[0,0,1] = @osc11freq ; frequency of the first oscillator of osc set 1 coeff[0,1,0] = @osc12amp ; amplitude of the second oscillator of osc set 1 coeff[0,1,1] = @osc12freq ; frequency of the second oscillator of osc set 1 coeff[0,2,0] = @osc13amp ; amplitude of the third oscillator of osc set 1 coeff[0,2,1] = @osc13freq ; frequency of the third oscillator of osc set 1 coeff[0,3,0] = @osc14amp ; amplitude of the fourth oscillator of osc set 1 coeff[0,3,1] = @osc14freq ; frequency of the fourth oscillator of osc set 1 coeff[1,0,0] = @osc21amp ; amplitude of the first oscillator of osc set 2 coeff[1,0,1] = @osc21freq ; frequency of the first oscillator of osc set 2 coeff[1,1,0] = @osc22amp ; amplitude of the second oscillator of osc set 2 coeff[1,1,1] = @osc22freq ; frequency of the second oscillator of osc set 2 coeff[1,2,0] = @osc23amp ; amplitude of the third oscillator of osc set 2 coeff[1,2,1] = @osc23freq ; frequency of the third oscillator of osc set 2 coeff[1,3,0] = @osc24amp ; amplitude of the fourth oscillator of osc set 2 coeff[1,3,1] = @osc24freq ; frequency of the fourth oscillator of osc set 2 offset[0] = @o1offset ; radial offset for first oscillator set offset[1] = @o2offset ; radial offset for second oscillator set absoluteangle[0] = @o1absangle absoluteangle[1] = @o2absangle absoluteresult[0] = @o1absresult absoluteresult[1] = @o2absresult oscselector[0,0] = @osc11sin oscselector[0,1] = @osc12sin oscselector[0,2] = @osc13sin oscselector[0,3] = @osc14sin oscselector[1,0] = @osc21sin oscselector[1,1] = @osc22sin oscselector[1,2] = @osc23sin oscselector[1,3] = @osc24sin numberoffuncs = 0 if @osc21amp != 0.0 twotraps = TRUE numberofoscsets = 2 else numberofoscsets = 1 endif ; @osc21amp elseif ((@traptype == "mixed 1") || (@traptype == "mixed 2")) ; polar function for 1 radius, osc set for the other coeff[0,0,0] = @f1scale ; first the function, for radius 1 trapfunc[0] = @func1 offset[0] = @f1offset absoluteangle[0] = @f1absangle absoluteresult[0] = @f1absresult const[0,0] = @const1f1 const[0,1] = @const2f1 const[0,2] = @const3f1 coeff[1,0,0] = @osc11amp ; now the oscillator, for radius 2 coeff[1,0,1] = @osc11freq coeff[1,1,0] = @osc12amp coeff[1,1,1] = @osc12freq coeff[1,2,0] = @osc13amp coeff[1,2,1] = @osc13freq coeff[1,3,0] = @osc14amp coeff[1,3,1] = @osc14freq offset[1] = @o1offset absoluteangle[1] = @o1absangle absoluteresult[1] = @o1absresult oscselector[1,0] = @osc11sin oscselector[1,1] = @osc12sin oscselector[1,2] = @osc13sin oscselector[1,3] = @osc14sin numberoffuncs = 1 numberofoscsets = 1 twotraps = TRUE endif ; @traptype elseif @coordtype == "Parametric" ; instead of computing radii, we will compute x,y pairs if @traptype == "functions" ; 4 polar funcs, one for each x- and y-coordinate of the 2 pairs coeff[0,0,0] = @f1scale ; scale factor for the first function (x-coordinate 1) coeff[1,0,0] = @f2scale ; scale factor for the second function (y-coordinate 1) coeff[2,0,0] = @f3scale ; scale factor for the third function (x-coordinate 2) coeff[3,0,0] = @f4scale ; scale factor for the fourth function (y-coordinate 2) trapfunc[0] = @func1 ; list index for the first function (x-ccord 1) trapfunc[1] = @func2 ; list index for the second function (y-ccord 1) trapfunc[2] = @func3 ; list index for the third function (x-ccord 2) trapfunc[3] = @func4 ; list index for the fourth function (y-ccord 2) offset[0] = @f1offset ; offset for first function (x-coordinate 1) offset[1] = @f2offset ; offset for second function (y-coordinate 1) offset[2] = @f3offset ; offset for third function (x-coordinate 2) offset[3] = @f4offset ; offset for fourth function (y-coordinate 2) absoluteangle[0] = @f1absangle absoluteangle[1] = @f2absangle absoluteangle[2] = @f3absangle absoluteangle[3] = @f4absangle absoluteresult[0] = @f1absresult absoluteresult[1] = @f2absresult absoluteresult[2] = @f3absresult absoluteresult[3] = @f4absresult const[0,0] = @const1f1 ; optional first parameter for first function (x-ccord 1) const[1,0] = @const1f2 ; optional first parameter for second function (y-ccord 1) const[2,0] = @const1f3 ; optional first parameter for third function (x-ccord 2) const[3,0] = @const1f4 ; optional first parameter for fourth function (y-ccord 2) const[0,1] = @const2f1 ; optional second parameter for first function (x-ccord 1) const[1,1] = @const2f2 ; optional second parameter for second function (y-ccord 1) const[2,1] = @const2f3 ; optional second parameter for third function (x-ccord 2) const[3,1] = @const2f4 ; optional second parameter for fourth function (y-ccord 2) const[0,2] = @const3f1 ; optional third parameter for first function (x-ccord 1) const[1,2] = @const3f2 ; optional third parameter for second function (y-ccord 1) const[2,2] = @const3f3 ; optional third parameter for third function (x-ccord 2) const[3,2] = @const3f4 ; optional third parameter for fourth function (y-ccord 2) if (@f3scale != 0.0) || (@f4scale != 0.0) numberoffuncs = 4 twotraps = TRUE else numberoffuncs = 2 endif ; @f3scale numberofoscsets = 0 elseif @traptype == "oscillators" ; 4 sets of 4 oscillators, 1 for each x- and y-coordinate coeff[0,0,0] = @osc11amp ; amplitude of the first oscillator of osc set 1 (x-coord 1) coeff[0,0,1] = @osc11freq ; frequency of the first oscillator of osc set 1 (x-coord 1) coeff[0,1,0] = @osc12amp ; amplitude of the second oscillator of osc set 1 (x-coord 1) coeff[0,1,1] = @osc12freq ; frequency of the second oscillator of osc set 1 (x-coord 1) coeff[0,2,0] = @osc13amp ; amplitude of the third oscillator of osc set 1 (x-coord 1) coeff[0,2,1] = @osc13freq ; frequency of the third oscillator of osc set 1 (x-coord 1) coeff[0,3,0] = @osc14amp ; amplitude of the fourth oscillator of osc set 1 (x-coord 1) coeff[0,3,1] = @osc14freq ; frequency of the fourth oscillator of osc set 1 (x-coord 1) coeff[1,0,0] = @osc21amp ; amplitude of the first oscillator of osc set 2 (y-coord 1) coeff[1,0,1] = @osc21freq ; frequency of the first oscillator of osc set 2 (y-coord 1) coeff[1,1,0] = @osc22amp ; amplitude of the second oscillator of osc set 2 (y-coord 1) coeff[1,1,1] = @osc22freq ; frequency of the second oscillator of osc set 2 (y-coord 1) coeff[1,2,0] = @osc23amp ; amplitude of the third oscillator of osc set 2 (y-coord 1) coeff[1,2,1] = @osc23freq ; frequency of the third oscillator of osc set 2 (y-coord 1) coeff[1,3,0] = @osc24amp ; amplitude of the fourth oscillator of osc set 2 (y-coord 1) coeff[1,3,1] = @osc24freq ; frequency of the fourth oscillator of osc set 2 (y-coord 1) coeff[2,0,0] = @osc31amp ; amplitude of the first oscillator of osc set 3 (x-coord 2) coeff[2,0,1] = @osc31freq ; frequency of the first oscillator of osc set 3 (x-coord 2) coeff[2,1,0] = @osc32amp ; amplitude of the second oscillator of osc set 3 (x-coord 2) coeff[2,1,1] = @osc32freq ; frequency of the second oscillator of osc set 3 (x-coord 2) coeff[2,2,0] = @osc33amp ; amplitude of the third oscillator of osc set 3 (x-coord 2) coeff[2,2,1] = @osc33freq ; frequency of the third oscillator of osc set 3 (x-coord 2) coeff[2,3,0] = @osc34amp ; amplitude of the fourth oscillator of osc set 3 (x-coord 2) coeff[2,3,1] = @osc34freq ; frequency of the fourth oscillator of osc set 3 (x-coord 2) coeff[3,0,0] = @osc41amp ; amplitude of the first oscillator of osc set 4 (y-coord 2) coeff[3,0,1] = @osc41freq ; frequency of the first oscillator of osc set 4 (y-coord 2) coeff[3,1,0] = @osc42amp ; amplitude of the second oscillator of osc set 4 (y-coord 2) coeff[3,1,1] = @osc42freq ; frequency of the second oscillator of osc set 4 (y-coord 2) coeff[3,2,0] = @osc43amp ; amplitude of the third oscillator of osc set 4 (y-coord 2) coeff[3,2,1] = @osc43freq ; frequency of the third oscillator of osc set 4 (y-coord 2) coeff[3,3,0] = @osc44amp ; amplitude of the fourth oscillator of osc set 4 (y-coord 2) coeff[3,3,1] = @osc44freq ; frequency of the fourth oscillator of osc set 4 (y-coord 2) offset[0] = @o1offset ; offset for first oscillator (x-coordinate 1) offset[1] = @o2offset ; offset for second oscillator (y-coordinate 1) offset[2] = @o3offset ; offset for third oscillator (x-coordinate 2) offset[3] = @o4offset ; offset for fourth oscillator (y-coordinate 2) absoluteangle[0] = @o1absangle absoluteangle[1] = @o2absangle absoluteangle[2] = @o3absangle absoluteangle[3] = @o4absangle absoluteresult[0] = @o1absresult absoluteresult[1] = @o2absresult absoluteresult[2] = @o3absresult absoluteresult[3] = @o4absresult oscselector[0,0] = @osc11sin oscselector[0,1] = @osc12sin oscselector[0,2] = @osc13sin oscselector[0,3] = @osc14sin oscselector[1,0] = @osc21sin oscselector[1,1] = @osc22sin oscselector[1,2] = @osc23sin oscselector[1,3] = @osc24sin oscselector[2,0] = @osc31sin oscselector[2,1] = @osc32sin oscselector[2,2] = @osc33sin oscselector[2,3] = @osc34sin oscselector[3,0] = @osc41sin oscselector[3,1] = @osc42sin oscselector[3,2] = @osc43sin oscselector[3,3] = @osc44sin numberoffuncs = 0 if (@osc31amp != 0.0) || (@osc41amp != 0.0) numberofoscsets = 4 twotraps = TRUE else numberofoscsets = 2 endif ; @osc31amp elseif ((@traptype == "mixed 1") || (@traptype == "mixed 2")) ; 2 funcs for 1st x,y, & 2 osc sets for the 2nd x,y coeff[0,0,0] = @f1scale ; first the two functions, for first x,y-coordinate pair coeff[1,0,0] = @f2scale trapfunc[0] = @func1 trapfunc[1] = @func2 offset[0] = @f1offset offset[1] = @f2offset absoluteangle[0] = @f1absangle absoluteangle[1] = @f2absangle absoluteresult[0] = @f1absresult absoluteresult[1] = @f2absresult const[0,0] = @const1f1 const[1,0] = @const1f2 const[0,1] = @const2f1 const[1,1] = @const2f2 const[0,2] = @const3f1 const[1,2] = @const3f2 coeff[2,0,0] = @osc11amp ; now, the two osc sets, for the second x,y-coord pair coeff[2,0,1] = @osc11freq coeff[2,1,0] = @osc12amp coeff[2,1,1] = @osc12freq coeff[2,2,0] = @osc13amp coeff[2,2,1] = @osc13freq coeff[2,3,0] = @osc14amp coeff[2,3,1] = @osc14freq coeff[3,0,0] = @osc21amp coeff[3,0,1] = @osc21freq coeff[3,1,0] = @osc22amp coeff[3,1,1] = @osc22freq coeff[3,2,0] = @osc23amp coeff[3,2,1] = @osc23freq coeff[3,3,0] = @osc24amp coeff[3,3,1] = @osc24freq offset[2] = @o1offset offset[3] = @o2offset absoluteangle[2] = @o1absangle absoluteangle[3] = @o2absangle absoluteresult[2] = @o1absresult absoluteresult[3] = @o2absresult oscselector[2,0] = @osc11sin oscselector[2,1] = @osc12sin oscselector[2,2] = @osc13sin oscselector[2,3] = @osc14sin oscselector[3,0] = @osc21sin oscselector[3,1] = @osc22sin oscselector[3,2] = @osc23sin oscselector[3,3] = @osc24sin numberoffuncs = 2 numberofoscsets = 2 twotraps = TRUE endif ; @traptype elseif @coordtype == "Mixed" ; compute one radius and one x,y-coordinate pair twotraps = TRUE if @traptype == "functions" ; 1 polar func for the radius, & 2 more funcs for the x,y-coordinates coeff[0,0,0] = @f1scale ; first, the radius calculation trapfunc[0] = @func1 offset[0] = @f1offset absoluteangle[0] = @f1absangle absoluteresult[0] = @f1absresult const[0,0] = @const1f1 const[0,1] = @const2f1 const[0,2] = @const3f1 coeff[1,0,0] = @f2scale ; now, the x- and y-coordinate calculations coeff[2,0,0] = @f3scale trapfunc[1] = @func2 trapfunc[2] = @func3 offset[1] = @f2offset offset[2] = @f3offset absoluteangle[1] = @f2absangle absoluteangle[2] = @f3absangle absoluteresult[1] = @f2absresult absoluteresult[2] = @f3absresult const[1,0] = @const1f2 const[2,0] = @const1f3 const[1,1] = @const2f2 const[2,1] = @const2f3 const[1,2] = @const3f2 const[2,2] = @const3f3 numberoffuncs = 3 numberofoscsets = 0 elseif @traptype == "oscillators" ; 1 set of 4 oscillators for the radius, 2 sets for the x,y pair coeff[0,0,0] = @osc11amp ; first, the radial oscillators coeff[0,0,1] = @osc11freq coeff[0,1,0] = @osc12amp coeff[0,1,1] = @osc12freq coeff[0,2,0] = @osc13amp coeff[0,2,1] = @osc13freq coeff[0,3,0] = @osc14amp coeff[0,3,1] = @osc14freq offset[0] = @o1offset absoluteangle[0] = @o1absangle absoluteresult[0] = @o1absresult oscselector[0,0] = @osc11sin oscselector[0,1] = @osc12sin oscselector[0,2] = @osc13sin oscselector[0,3] = @osc14sin coeff[1,0,0] = @osc21amp ; now, the 2 sets of 4 oscillators to define the x- and y-coords coeff[1,0,1] = @osc21freq coeff[1,1,0] = @osc22amp coeff[1,1,1] = @osc22freq coeff[1,2,0] = @osc23amp coeff[1,2,1] = @osc23freq coeff[1,3,0] = @osc24amp coeff[1,3,1] = @osc24freq coeff[2,0,0] = @osc31amp coeff[2,0,1] = @osc31freq coeff[2,1,0] = @osc32amp coeff[2,1,1] = @osc32freq coeff[2,2,0] = @osc33amp coeff[2,2,1] = @osc33freq coeff[2,3,0] = @osc34amp coeff[2,3,1] = @osc34freq offset[1] = @o2offset offset[2] = @o3offset absoluteangle[1] = @o2absangle absoluteangle[2] = @o3absangle absoluteresult[1] = @o2absresult absoluteresult[2] = @o3absresult oscselector[1,0] = @osc21sin oscselector[1,1] = @osc22sin oscselector[1,2] = @osc23sin oscselector[1,3] = @osc24sin oscselector[2,0] = @osc31sin oscselector[2,1] = @osc32sin oscselector[2,2] = @osc33sin oscselector[2,3] = @osc34sin numberoffuncs = 0 numberofoscsets = 3 elseif @traptype == "mixed 1" ; radius computed by polar funcs, x,y-coords by 2 sets of oscillators coeff[0,0,0] = @f1scale ; first, the radius calculation trapfunc[0] = @func1 offset[0] = @f1offset absoluteangle[0] = @f1absangle absoluteresult[0] = @f1absresult const[0,0] = @const1f1 const[0,1] = @const2f1 const[0,2] = @const3f1 coeff[1,0,0] = @osc11amp ; now, the 2 sets of 4 oscillators to define the x- and y-coords coeff[1,0,1] = @osc11freq coeff[1,1,0] = @osc12amp coeff[1,1,1] = @osc12freq coeff[1,2,0] = @osc13amp coeff[1,2,1] = @osc13freq coeff[1,3,0] = @osc14amp coeff[1,3,1] = @osc14freq coeff[2,0,0] = @osc21amp coeff[2,0,1] = @osc21freq coeff[2,1,0] = @osc22amp coeff[2,1,1] = @osc22freq coeff[2,2,0] = @osc23amp coeff[2,2,1] = @osc23freq coeff[2,3,0] = @osc24amp coeff[2,3,1] = @osc24freq offset[1] = @o1offset offset[2] = @o2offset absoluteangle[1] = @o1absangle absoluteangle[2] = @o2absangle absoluteresult[1] = @o1absresult absoluteresult[2] = @o2absresult oscselector[1,0] = @osc11sin oscselector[1,1] = @osc12sin oscselector[1,2] = @osc13sin oscselector[1,3] = @osc14sin oscselector[2,0] = @osc21sin oscselector[2,1] = @osc22sin oscselector[2,2] = @osc23sin oscselector[2,3] = @osc24sin numberoffuncs = 1 numberofoscsets = 2 elseif @traptype == "mixed 2" ; x,y- coords computed using polar funcs, radius using 1 set of oscillators coeff[0,0,0] = @f1scale ; first, calc the x,y pair with polar funcs coeff[1,0,0] = @f2scale trapfunc[0] = @func1 trapfunc[1] = @func2 offset[0] = @f1offset offset[1] = @f2offset absoluteangle[0] = @f1absangle absoluteangle[1] = @f2absangle absoluteresult[0] = @f1absresult absoluteresult[1] = @f2absresult const[0,0] = @const1f1 const[1,0] = @const1f2 const[0,1] = @const2f1 const[1,1] = @const2f2 const[0,2] = @const3f1 const[1,2] = @const3f2 coeff[2,0,0] = @osc11amp ; now compute a radius using a 4-oscillator set coeff[2,0,1] = @osc11freq coeff[2,1,0] = @osc12amp coeff[2,1,1] = @osc12freq coeff[2,2,0] = @osc13amp coeff[2,2,1] = @osc13freq coeff[2,3,0] = @osc14amp coeff[2,3,1] = @osc14freq offset[2] = @o1offset absoluteangle[2] = @o1absangle absoluteresult[2] = @o1absresult oscselector[2,0] = @osc11sin oscselector[2,1] = @osc12sin oscselector[2,2] = @osc13sin oscselector[2,3] = @osc14sin numberoffuncs = 2 numberofoscsets = 1 endif ; @traptype endif ; @coordtype if @texture texfunc[0] = @texfunc1 texfunc[1] = @texfunc2 texfunc[2] = @texfunc3 texfunc[3] = @texfunc4 endif ; @texture init: complex z1 = (0,0) complex z2 = (0,0) complex z3 = (0,0) complex z4 = (0,0) complex z1p = (0,0) complex z1q = (0,0) complex qw = (0,0) complex er = (0,0) complex ty = (0,0) complex nuvar = (0,0) ; New or newly defined variables complex ztemp = complex ztemp2 = (0,0) ; various uses; generally holds modifed #z complex traptemp = complex traptemp2 = (0,0) float tempangle = float tempangle2 = 0.0 ; angle of transformed, centered, etc., z float ftemp = float ftemp2 = 0.0 ; various uses; scratchpad variables float texadjust = 0.0 int maxindex = 0 int index = 0 ; outer/main loop variable int index2 = 0 ; pointer to array index within main loops int index3 = 0 ; inner loop variable int itercount = 0 ; for trapping the Nth z iterate bool solidset = bool maskAset = bool maskBset = FALSE ; flags used for masking ; int ptmodeiter = int ptmodecount = 0 ; This array holds the result of each of the r, x, or y calculations float result[4] maxindex = 4 while index < maxindex result[index] = 0.0 index = index + 1 endwhile ; index ; For history options; initialize history array complex zhist[10] index = 0, maxindex = 10 while index < maxindex zhist[index] = ztemp index = index + 1 endwhile ; index ; Old variables ; Change and scale variables to facilitate variation, if enabled float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = 0.1 * @overallscale, float scalestep = 0.05 * @scalestp float rwidth = @ringwidth, float ringstep = 0.05 * @ringstp float rotation = @rotate * degconversion, float rotationstep = 0.05 * @rotationstp complex center = @centr, float centerstep = @centerstp ; For fBm computation variation option float fBmmamount = @fBmamount, float fBmadjust = 0.0, float tempcolor = 0.0 float fBmstep = @fBmstp ; General variables and options if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation float sign = 0.0 bool trapped = FALSE bool vary = TRUE float innerradius = thresh - @ringwidth if ( @whattotrap > 11 ) innerradius = thresh + @ringwidth ; innerradius is really an outerradius if we are exceeding limits endif ; @whattotrap int iter = 0, int count = 0 complex zinput = (0,0) ; holds the transformed/rotated etc #z; actual input to the trap float tempx = 0.0, float tempy = 0.0 ; misc. float vars ; More general options, mostly relating to trapped values float test = 0.0 ; this will hold the value being checked for min, max, etc. complex tempc = (0,0) ; the trapped trap point float tvtrapped = float tvtrapped2 = float tvtrapped3 = float tvtrapped4 = 1e9 ; trapped test values int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 ; trapped iterations float zangle = float tangle = 0.0 ; angle of #z, trap point float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 ; trapped z angles float tatrapped = float tatrapped2 = float tatrapped3 = float tatrapped4 = 0.0 ; trapped trap pt angles float ziatrapped = float ziatrapped2 = float ziatrapped3 = float ziatrapped4 = 0.0 ; trapped zinput angles complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) ; trapped z values complex zitrapped = complex zitrapped2 = complex zitrapped3 = complex zitrapped4 = (0,0) ; trapped zinputs complex ttrapped = complex ttrapped2 = complex ttrapped3 = complex ttrapped4 = (0,0) ; trapped trap pts ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) tvtrapped = tvtrapped2 = tvtrapped3 = tvtrapped4 = -1e9 elseif @whattotrap > 16 tvtrapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 complex z1 = #z if @th2 == false qw = @nufunc(z1-@tw)^@exp3 er = @nufunc2((z1-@tw2)^@exp1) ty = @nufunc3((z1-@tw3)^@exp2) if @change == "1" z1 = @nufunc(z1-@tw)^@exp1 elseif @change == "2" z1 = qw+er elseif @change == "3" z1 = qw-er elseif @change == "4" z1 = qw*er elseif @change == "5" z1 = qw/er elseif @change == "6" z1 = qw^er elseif @change == "7" if @op == "+" z1 = qw+(er+ty) elseif @op == "-" z1 = qw+(er-ty) elseif @op == "*" z1 = qw+(er*ty) elseif @op == "/" z1 = qw+(er/ty) elseif @op == "^" z1 = qw+(er^ty) endif elseif @change == "8" if @op == "+" z1 = qw-(er+ty) elseif @op == "-" z1 = qw-(er-ty) elseif @op == "*" z1 = qw-(er*ty) elseif @op == "/" z1 = qw-(er/ty) elseif @op == "^" z1 = qw-(er^ty) endif elseif @change == "9" if @op == "+" z1 = qw*(er+ty) elseif @op == "-" z1 = qw*(er-ty) elseif @op == "*" z1 = qw*(er*ty) elseif @op == "/" z1 = qw*(er/ty) elseif @op == "^" z1 = qw*(er^ty) endif elseif @change == "10" if @op == "+" z1 = qw/(er+ty) elseif @op == "-" z1 = qw/(er-ty) elseif @op == "*" z1 = qw/(er*ty) elseif @op == "/" z1 = qw/(er/ty) elseif @op == "^" z1 = qw/(er^ty) endif elseif @change == "11" if @op == "+" z1 = qw^(er+ty) elseif @op == "-" z1 = qw^(er-ty) elseif @op == "*" z1 = qw^(er*ty) elseif @op == "/" z1 = qw^(er/ty) elseif @op == "^" z1 = qw^(er^ty) endif endif else if @zchange1 == "|z|" z2 = |z1| elseif @zchange1 == "atan2(z)" z2 = atan2(z1) elseif @zchange1 == "real(z)" z2 = real(z1) elseif @zchange1 == "imag(z)" z2 = imag(z1) endif if @zchange2 == "|z|" z3 = |z1| elseif @zchange2 == "atan2(z)" z3 = atan2(z1) elseif @zchange2 == "real(z)" z3 = real(z1) elseif @zchange2 == "imag(z)" z3 = imag(z1) endif if @zchange3 == "|z|" z4 = |z1| elseif @zchange3 == "atan2(z)" z4 = atan2(z1) elseif @zchange3 == "real(z)" z4 = real(z1) elseif @zchange3 == "imag(z)" z4 = imag(z1) endif aah = @nufunc((z1-@tw)+@nufunc4(z2-@tw4)^@exp4) bbh = @nufunc((z1-@tw)-@nufunc4(z2-@tw4)^@exp4) cch = @nufunc4((z2-@tw4)^@exp4-@nufunc(z1-@tw)) ff = real((z3-@tw5)^@exp5) dd = @nufunc5(ff) jj = (z4-@tw6) kk = (z1-@tw2) oo = (z1-@tw3) gg = @nufunc2(kk) hh = @nufunc6(jj)^@exp6 pp = @nufunc3(oo) if @mmode == "z+|z|" nuvar = aah elseif @mmode == "z-|z|" nuvar = bbh elseif @mmode == "|z|-z" nuvar = cch endif if @change == "1" z1 = nuvar^@exp1 elseif @change == "2" if @mmode2 == "z+|z|" z1 = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif elseif @change == "3" if @mmode2 == "z+|z|" z1 = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif elseif @change == "4" if @mmode2 == "z+|z|" z1 = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif elseif @change == "5" if @mmode2 == "z+|z|" z1 = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif elseif @change == "6" if @mmode2 == "z+|z|" z1 = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1 = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1 = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1 = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1 = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1 = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif elseif @change == "7" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3+@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3+@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3+@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3+@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3+@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3+@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "8" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3-@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3-@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3-@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3-@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3-@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3-@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "9" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3*@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3*@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3*@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3*@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3*@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3*@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "10" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3/@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3/@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3/@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3/@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3/@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3/@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif elseif @change == "11" if @mmode3 == "z+|z|" z1q = @nufunc3(oo+hh)^@exp2 elseif @mmode3 == "z-|z|" z1q = @nufunc3(oo-hh)^@exp2 elseif @mmode3 == "|z|-z" z1q = @nufunc6(jj^@exp6-pp)^@exp2 elseif @mmode3 == "z*|z|" z1q = @nufunc3(oo*hh)^@exp2 elseif @mmode3 == "z/|z|" z1q = @nufunc3(oo/hh)^@exp2 elseif @mmode3 == "|z|/z" z1q = @nufunc6(jj^@exp6/pp)^@exp2 endif if @mmode2 == "z+|z|" z1p = nuvar^@exp3^@nufunc2(kk+dd)^@exp1 elseif @mmode2 == "z-|z|" z1p = nuvar^@exp3^@nufunc2(kk-dd)^@exp1 elseif @mmode2 == "|z|-z" z1p = nuvar^@exp3^@nufunc5(ff-gg)^@exp1 elseif @mmode2 == "z*|z|" z1p = nuvar^@exp3^@nufunc2(kk*dd)^@exp1 elseif @mmode2 == "z/|z|" z1p = nuvar^@exp3^@nufunc2(kk/dd)^@exp1 elseif @mmode2 == "|z|/z" z1p = nuvar^@exp3^@nufunc5(ff/gg)^@exp1 endif if @op == "+" z1 = z1q + z1p elseif @op == "-" z1 = z1q - z1p elseif @op == "*" z1 = z1q * z1p elseif @op == "/" z1 = z1q / z1p elseif @op == "^" z1 = z1q ^ z1p endif endif endif if @history maxindex = 0, index = 9 while index > maxindex index2 = index-1 zhist[index] = zhist[index2] index = index2 endwhile ; index zhist[0] = z1 endif ; @history if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap if @history if @histype == 1 ztemp = zhist[1] elseif @histype == 2 ztemp = real(z1) + flip(imag(zhist[1])) elseif @histype == 3 ztemp = real(zhist[1]) + flip(imag(z1)) elseif @histype == 4 ztemp = z1 - zhist[1] elseif @histype == 5 ztemp = z1 - real(zhist[1]) elseif @histype == 6 ztemp = z1 - flip(imag(zhist[1])) elseif @histype == 7 ztemp = z1 + zhist[1] elseif @histype == 8 ztemp = z1 + real(zhist[1]) elseif @histype == 9 ztemp = z1 + flip(imag(zhist[1])) elseif @histype == 10 ztemp = z1 * zhist[1] elseif @histype == 11 ztemp = z1 * real(zhist[1]) elseif @histype == 12 ztemp = z1 * flip(imag(zhist[1])) elseif @histype == 13 ztemp = real(z1) - zhist[1] elseif @histype == 14 ztemp = flip(imag(z1)) - zhist[1] elseif @histype == 15 ztemp = real(z1) + zhist[1] elseif @histype == 16 ztemp = flip(imag(z1)) + zhist[1] elseif @histype == 17 ztemp = real(z1) * zhist[1] elseif @histype == 18 ztemp = flip(imag(z1)) * zhist[1] elseif @histype == 19 ztemp = (real(z1) * imag(zhist[1])) + flip((imag(z1) * real(zhist[1]))) elseif @histype == 20 ztemp = (real(z1) * imag(zhist[1])) - flip((imag(z1) * real(zhist[1]))) elseif @histype == 21 ztemp = (real(z1) * imag(zhist[1])) * flip((imag(z1) * real(zhist[1]))) elseif @histype == 22 ztemp = (imag(z1) * real(zhist[1])) + flip((real(z1) * imag(zhist[1]))) elseif @histype == 23 ztemp = (imag(z1) * real(zhist[1])) - flip((real(z1) * imag(zhist[1]))) elseif @histype == 24 ztemp = (imag(z1) * real(zhist[1])) * flip((real(z1) * imag(zhist[1]))) elseif @histype == 25 ztemp = (real(z1) + imag(zhist[1])) + flip((imag(z1) + real(zhist[1]))) elseif @histype == 26 ztemp = (real(z1) + imag(zhist[1])) - flip((imag(z1) + real(zhist[1]))) elseif @histype == 27 ztemp = (real(z1) + imag(zhist[1])) * flip((imag(z1) + real(zhist[1]))) elseif @histype == 28 ztemp = (imag(z1) + real(zhist[1])) + flip((real(z1) + imag(zhist[1]))) elseif @histype == 29 ztemp = (imag(z1) + real(zhist[1])) - flip((real(z1) + imag(zhist[1]))) elseif @histype == 30 ztemp = (imag(z1) + real(zhist[1])) * flip((real(z1) + imag(zhist[1]))) elseif @histype == 31 ztemp = (real(z1) - imag(zhist[1])) + flip((imag(z1) - real(zhist[1]))) elseif @histype == 32 ztemp = (real(z1) - imag(zhist[1])) - flip((imag(z1) - real(zhist[1]))) elseif @histype == 33 ztemp = (real(z1) - imag(zhist[1])) * flip((imag(z1) - real(zhist[1]))) elseif @histype == 34 ztemp = (imag(z1) - real(zhist[1])) + flip((real(z1) - imag(zhist[1]))) elseif @histype == 35 ztemp = (imag(z1) - real(zhist[1])) - flip((real(z1) - imag(zhist[1]))) elseif @histype == 36 ztemp = (imag(z1) - real(zhist[1])) * flip((real(z1) - imag(zhist[1]))) elseif @histype == 37 ztemp = zhist[2] elseif @histype == 38 ztemp = real(z1) + flip(imag(zhist[2])) elseif @histype == 39 ztemp = real(zhist[2]) + flip(imag(z1)) elseif @histype == 40 ztemp = z1 - zhist[2] elseif @histype == 41 ztemp = z1 - real(zhist[2]) elseif @histype == 42 ztemp = z1 - flip(imag(zhist[2])) elseif @histype == 43 ztemp = z1 + zhist[2] elseif @histype == 44 ztemp = z1 + real(zhist[2]) elseif @histype == 45 ztemp = z1 + flip(imag(zhist[2])) elseif @histype == 46 ztemp = z1 * zhist[2] elseif @histype == 47 ztemp = z1 * real(zhist[2]) elseif @histype == 48 ztemp = z1 * flip(imag(zhist[2])) elseif @histype == 49 ztemp = real(z1) - zhist[2] elseif @histype == 50 ztemp = flip(imag(z1)) - zhist[2] elseif @histype == 51 ztemp = real(z1) + zhist[2] elseif @histype == 52 ztemp = flip(imag(z1)) + zhist[2] elseif @histype == 53 ztemp = real(z1) * zhist[2] elseif @histype == 54 ztemp = flip(imag(z1)) * zhist[2] elseif @histype == 55 ztemp = (real(z1) * imag(zhist[2])) + flip((imag(z1) * real(zhist[2]))) elseif @histype == 56 ztemp = (real(z1) * imag(zhist[2])) - flip((imag(z1) * real(zhist[2]))) elseif @histype == 57 ztemp = (real(z1) * imag(zhist[2])) * flip((imag(z1) * real(zhist[2]))) elseif @histype == 58 ztemp = (imag(z1) * real(zhist[2])) + flip((real(z1) * imag(zhist[2]))) elseif @histype == 59 ztemp = (imag(z1) * real(zhist[2])) - flip((real(z1) * imag(zhist[2]))) elseif @histype == 60 ztemp = (imag(z1) * real(zhist[2])) * flip((real(z1) * imag(zhist[2]))) elseif @histype == 61 ztemp = (real(z1) + imag(zhist[2])) + flip((imag(z1) + real(zhist[2]))) elseif @histype == 62 ztemp = (real(z1) + imag(zhist[2])) - flip((imag(z1) + real(zhist[2]))) elseif @histype == 63 ztemp = (real(z1) + imag(zhist[2])) * flip((imag(z1) + real(zhist[2]))) elseif @histype == 64 ztemp = (imag(z1) + real(zhist[2])) + flip((real(z1) + imag(zhist[2]))) elseif @histype == 65 ztemp = (imag(z1) + real(zhist[2])) - flip((real(z1) + imag(zhist[2]))) elseif @histype == 66 ztemp = (imag(z1) + real(zhist[2])) * flip((real(z1) + imag(zhist[2]))) elseif @histype == 67 ztemp = (real(z1) - imag(zhist[2])) + flip((imag(z1) - real(zhist[2]))) elseif @histype == 68 ztemp = (real(z1) - imag(zhist[2])) - flip((imag(z1) - real(zhist[2]))) elseif @histype == 69 ztemp = (real(z1) - imag(zhist[2])) * flip((imag(z1) - real(zhist[2]))) elseif @histype == 70 ztemp = (imag(z1) - real(zhist[2])) + flip((real(z1) - imag(zhist[2]))) elseif @histype == 71 ztemp = (imag(z1) - real(zhist[2])) - flip((real(z1) - imag(zhist[2]))) elseif @histype == 72 ztemp = (imag(z1) - real(zhist[2])) * flip((real(z1) - imag(zhist[2]))) elseif @histype == 73 ztemp = zhist[3] elseif @histype == 74 ztemp = real(z1) + flip(imag(zhist[3])) elseif @histype == 75 ztemp = real(zhist[3]) + flip(imag(z1)) elseif @histype == 76 ztemp = z1 - zhist[3] elseif @histype == 77 ztemp = z1 - real(zhist[3]) elseif @histype == 78 ztemp = z1 - flip(imag(zhist[3])) elseif @histype == 79 ztemp = z1 + zhist[3] elseif @histype == 80 ztemp = z1 + real(zhist[3]) elseif @histype == 81 ztemp = z1 + flip(imag(zhist[3])) elseif @histype == 82 ztemp = z1 * zhist[3] elseif @histype == 83 ztemp = z1 * real(zhist[3]) elseif @histype == 84 ztemp = z1 * flip(imag(zhist[3])) elseif @histype == 85 ztemp = real(z1) - zhist[3] elseif @histype == 86 ztemp = flip(imag(z1)) - zhist[3] elseif @histype == 87 ztemp = real(z1) + zhist[3] elseif @histype == 88 ztemp = flip(imag(z1)) + zhist[3] elseif @histype == 89 ztemp = real(z1) * zhist[3] elseif @histype == 90 ztemp = flip(imag(z1)) * zhist[3] elseif @histype == 91 ztemp = (real(z1) * imag(zhist[3])) + flip((imag(z1) * real(zhist[3]))) elseif @histype == 92 ztemp = (real(z1) * imag(zhist[3])) - flip((imag(z1) * real(zhist[3]))) elseif @histype == 93 ztemp = (real(z1) * imag(zhist[3])) * flip((imag(z1) * real(zhist[3]))) elseif @histype == 94 ztemp = (imag(z1) * real(zhist[3])) + flip((real(z1) * imag(zhist[3]))) elseif @histype == 95 ztemp = (imag(z1) * real(zhist[3])) - flip((real(z1) * imag(zhist[3]))) elseif @histype == 96 ztemp = (imag(z1) * real(zhist[3])) * flip((real(z1) * imag(zhist[3]))) elseif @histype == 97 ztemp = (real(z1) + imag(zhist[3])) + flip((imag(z1) + real(zhist[3]))) elseif @histype == 98 ztemp = (real(z1) + imag(zhist[3])) - flip((imag(z1) + real(zhist[3]))) elseif @histype == 99 ztemp = (real(z1) + imag(zhist[3])) * flip((imag(z1) + real(zhist[3]))) elseif @histype == 100 ztemp = (imag(z1) + real(zhist[3])) + flip((real(z1) + imag(zhist[3]))) elseif @histype == 101 ztemp = (imag(z1) + real(zhist[3])) - flip((real(z1) + imag(zhist[3]))) elseif @histype == 102 ztemp = (imag(z1) + real(zhist[3])) * flip((real(z1) + imag(zhist[3]))) elseif @histype == 103 ztemp = (real(z1) - imag(zhist[3])) + flip((imag(z1) - real(zhist[3]))) elseif @histype == 104 ztemp = (real(z1) - imag(zhist[3])) - flip((imag(z1) - real(zhist[3]))) elseif @histype == 105 ztemp = (real(z1) - imag(zhist[3])) * flip((imag(z1) - real(zhist[3]))) elseif @histype == 106 ztemp = (imag(z1) - real(zhist[3])) + flip((real(z1) - imag(zhist[3]))) elseif @histype == 107 ztemp = (imag(z1) - real(zhist[3])) - flip((real(z1) - imag(zhist[3]))) elseif @histype == 108 ztemp = (imag(z1) - real(zhist[3])) * flip((real(z1) - imag(zhist[3]))) elseif @histype == 109 ztemp = zhist[4] elseif @histype == 110 ztemp = real(z1) + flip(imag(zhist[4])) elseif @histype == 111 ztemp = real(zhist[4]) + flip(imag(z1)) elseif @histype == 112 ztemp = z1 - zhist[4] elseif @histype == 113 ztemp = z1 - real(zhist[4]) elseif @histype == 114 ztemp = z1 - flip(imag(zhist[4])) elseif @histype == 115 ztemp = z1 + zhist[4] elseif @histype == 116 ztemp = z1 + real(zhist[4]) elseif @histype == 117 ztemp = z1 + flip(imag(zhist[4])) elseif @histype == 118 ztemp = z1 * zhist[4] elseif @histype == 119 ztemp = z1 * real(zhist[4]) elseif @histype == 120 ztemp = z1 * flip(imag(zhist[4])) elseif @histype == 121 ztemp = real(z1) - zhist[4] elseif @histype == 122 ztemp = flip(imag(z1)) - zhist[4] elseif @histype == 123 ztemp = real(z1) + zhist[4] elseif @histype == 124 ztemp = flip(imag(z1)) + zhist[4] elseif @histype == 125 ztemp = real(z1) * zhist[4] elseif @histype == 126 ztemp = flip(imag(z1)) * zhist[4] elseif @histype == 127 ztemp = (real(z1) * imag(zhist[4])) + flip((imag(z1) * real(zhist[4]))) elseif @histype == 128 ztemp = (real(z1) * imag(zhist[4])) - flip((imag(z1) * real(zhist[4]))) elseif @histype == 129 ztemp = (real(z1) * imag(zhist[4])) * flip((imag(z1) * real(zhist[4]))) elseif @histype == 130 ztemp = (imag(z1) * real(zhist[4])) + flip((real(z1) * imag(zhist[4]))) elseif @histype == 131 ztemp = (imag(z1) * real(zhist[4])) - flip((real(z1) * imag(zhist[4]))) elseif @histype == 132 ztemp = (imag(z1) * real(zhist[4])) * flip((real(z1) * imag(zhist[4]))) elseif @histype == 133 ztemp = (real(z1) + imag(zhist[4])) + flip((imag(z1) + real(zhist[4]))) elseif @histype == 134 ztemp = (real(z1) + imag(zhist[4])) - flip((imag(z1) + real(zhist[4]))) elseif @histype == 135 ztemp = (real(z1) + imag(zhist[4])) * flip((imag(z1) + real(zhist[4]))) elseif @histype == 136 ztemp = (imag(z1) + real(zhist[4])) + flip((real(z1) + imag(zhist[4]))) elseif @histype == 137 ztemp = (imag(z1) + real(zhist[4])) - flip((real(z1) + imag(zhist[4]))) elseif @histype == 138 ztemp = (imag(z1) + real(zhist[4])) * flip((real(z1) + imag(zhist[4]))) elseif @histype == 139 ztemp = (real(z1) - imag(zhist[4])) + flip((imag(z1) - real(zhist[4]))) elseif @histype == 140 ztemp = (real(z1) - imag(zhist[4])) - flip((imag(z1) - real(zhist[4]))) elseif @histype == 141 ztemp = (real(z1) - imag(zhist[4])) * flip((imag(z1) - real(zhist[4]))) elseif @histype == 142 ztemp = (imag(z1) - real(zhist[4])) + flip((real(z1) - imag(zhist[4]))) elseif @histype == 143 ztemp = (imag(z1) - real(zhist[4])) - flip((real(z1) - imag(zhist[4]))) elseif @histype == 144 ztemp = (imag(z1) - real(zhist[4])) * flip((real(z1) - imag(zhist[4]))) elseif @histype == 145 ztemp = zhist[5] elseif @histype == 146 ztemp = real(z1) + flip(imag(zhist[5])) elseif @histype == 147 ztemp = real(zhist[5]) + flip(imag(z1)) elseif @histype == 148 ztemp = z1 - zhist[5] elseif @histype == 149 ztemp = z1 - real(zhist[5]) elseif @histype == 150 ztemp = z1 - flip(imag(zhist[5])) elseif @histype == 151 ztemp = z1 + zhist[5] elseif @histype == 152 ztemp = z1 + real(zhist[5]) elseif @histype == 153 ztemp = z1 + flip(imag(zhist[5])) elseif @histype == 154 ztemp = z1 * zhist[5] elseif @histype == 155 ztemp = z1 * real(zhist[5]) elseif @histype == 156 ztemp = z1 * flip(imag(zhist[5])) elseif @histype == 157 ztemp = real(z1) - zhist[5] elseif @histype == 158 ztemp = flip(imag(z1)) - zhist[5] elseif @histype == 159 ztemp = real(z1) + zhist[5] elseif @histype == 160 ztemp = flip(imag(z1)) + zhist[5] elseif @histype == 161 ztemp = real(z1) * zhist[5] elseif @histype == 162 ztemp = flip(imag(z1)) * zhist[5] elseif @histype == 163 ztemp = (real(z1) * imag(zhist[5])) + flip((imag(z1) * real(zhist[5]))) elseif @histype == 164 ztemp = (real(z1) * imag(zhist[5])) - flip((imag(z1) * real(zhist[5]))) elseif @histype == 165 ztemp = (real(z1) * imag(zhist[5])) * flip((imag(z1) * real(zhist[5]))) elseif @histype == 166 ztemp = (imag(z1) * real(zhist[5])) + flip((real(z1) * imag(zhist[5]))) elseif @histype == 167 ztemp = (imag(z1) * real(zhist[5])) - flip((real(z1) * imag(zhist[5]))) elseif @histype == 168 ztemp = (imag(z1) * real(zhist[5])) * flip((real(z1) * imag(zhist[5]))) elseif @histype == 169 ztemp = (real(z1) + imag(zhist[5])) + flip((imag(z1) + real(zhist[5]))) elseif @histype == 170 ztemp = (real(z1) + imag(zhist[5])) - flip((imag(z1) + real(zhist[5]))) elseif @histype == 171 ztemp = (real(z1) + imag(zhist[5])) * flip((imag(z1) + real(zhist[5]))) elseif @histype == 172 ztemp = (imag(z1) + real(zhist[5])) + flip((real(z1) + imag(zhist[5]))) elseif @histype == 173 ztemp = (imag(z1) + real(zhist[5])) - flip((real(z1) + imag(zhist[5]))) elseif @histype == 174 ztemp = (imag(z1) + real(zhist[5])) * flip((real(z1) + imag(zhist[5]))) elseif @histype == 175 ztemp = (real(z1) - imag(zhist[5])) + flip((imag(z1) - real(zhist[5]))) elseif @histype == 176 ztemp = (real(z1) - imag(zhist[5])) - flip((imag(z1) - real(zhist[5]))) elseif @histype == 177 ztemp = (real(z1) - imag(zhist[5])) * flip((imag(z1) - real(zhist[5]))) elseif @histype == 178 ztemp = (imag(z1) - real(zhist[5])) + flip((real(z1) - imag(zhist[5]))) elseif @histype == 179 ztemp = (imag(z1) - real(zhist[5])) - flip((real(z1) - imag(zhist[5]))) elseif @histype == 180 ztemp = (imag(z1) - real(zhist[5])) * flip((real(z1) - imag(zhist[5]))) elseif @histype == 181 ztemp = zhist[6] elseif @histype == 182 ztemp = real(z1) + flip(imag(zhist[6])) elseif @histype == 183 ztemp = real(zhist[6]) + flip(imag(z1)) elseif @histype == 184 ztemp = z1 - zhist[6] elseif @histype == 185 ztemp = z1 - real(zhist[6]) elseif @histype == 186 ztemp = z1 - flip(imag(zhist[6])) elseif @histype == 187 ztemp = z1 + zhist[6] elseif @histype == 188 ztemp = z1 + real(zhist[6]) elseif @histype == 189 ztemp = z1 + flip(imag(zhist[6])) elseif @histype == 190 ztemp = z1 * zhist[6] elseif @histype == 191 ztemp = z1 * real(zhist[6]) elseif @histype == 192 ztemp = z1 * flip(imag(zhist[6])) elseif @histype == 193 ztemp = real(z1) - zhist[6] elseif @histype == 194 ztemp = flip(imag(z1)) - zhist[6] elseif @histype == 195 ztemp = real(z1) + zhist[6] elseif @histype == 196 ztemp = flip(imag(z1)) + zhist[6] elseif @histype == 197 ztemp = real(z1) * zhist[6] elseif @histype == 198 ztemp = flip(imag(z1)) * zhist[6] elseif @histype == 199 ztemp = (real(z1) * imag(zhist[6])) + flip((imag(z1) * real(zhist[6]))) elseif @histype == 200 ztemp = (real(z1) * imag(zhist[6])) - flip((imag(z1) * real(zhist[6]))) elseif @histype == 201 ztemp = (real(z1) * imag(zhist[6])) * flip((imag(z1) * real(zhist[6]))) elseif @histype == 202 ztemp = (imag(z1) * real(zhist[6])) + flip((real(z1) * imag(zhist[6]))) elseif @histype == 203 ztemp = (imag(z1) * real(zhist[6])) - flip((real(z1) * imag(zhist[6]))) elseif @histype == 204 ztemp = (imag(z1) * real(zhist[6])) * flip((real(z1) * imag(zhist[6]))) elseif @histype == 205 ztemp = (real(z1) + imag(zhist[6])) + flip((imag(z1) + real(zhist[6]))) elseif @histype == 206 ztemp = (real(z1) + imag(zhist[6])) - flip((imag(z1) + real(zhist[6]))) elseif @histype == 207 ztemp = (real(z1) + imag(zhist[6])) * flip((imag(z1) + real(zhist[6]))) elseif @histype == 208 ztemp = (imag(z1) + real(zhist[6])) + flip((real(z1) + imag(zhist[6]))) elseif @histype == 209 ztemp = (imag(z1) + real(zhist[6])) - flip((real(z1) + imag(zhist[6]))) elseif @histype == 210 ztemp = (imag(z1) + real(zhist[6])) * flip((real(z1) + imag(zhist[6]))) elseif @histype == 211 ztemp = (real(z1) - imag(zhist[6])) + flip((imag(z1) - real(zhist[6]))) elseif @histype == 212 ztemp = (real(z1) - imag(zhist[6])) - flip((imag(z1) - real(zhist[6]))) elseif @histype == 213 ztemp = (real(z1) - imag(zhist[6])) * flip((imag(z1) - real(zhist[6]))) elseif @histype == 214 ztemp = (imag(z1) - real(zhist[6])) + flip((real(z1) - imag(zhist[6]))) elseif @histype == 215 ztemp = (imag(z1) - real(zhist[6])) - flip((real(z1) - imag(zhist[6]))) elseif @histype == 216 ztemp = (imag(z1) - real(zhist[6])) * flip((real(z1) - imag(zhist[6]))) elseif @histype == 217 ztemp = zhist[7] elseif @histype == 218 ztemp = real(z1) + flip(imag(zhist[7])) elseif @histype == 219 ztemp = real(zhist[7]) + flip(imag(z1)) elseif @histype == 220 ztemp = z1 - zhist[7] elseif @histype == 221 ztemp = z1 - real(zhist[7]) elseif @histype == 222 ztemp = z1 - flip(imag(zhist[7])) elseif @histype == 223 ztemp = z1 + zhist[7] elseif @histype == 224 ztemp = z1 + real(zhist[7]) elseif @histype == 225 ztemp = z1 + flip(imag(zhist[7])) elseif @histype == 226 ztemp = z1 * zhist[7] elseif @histype == 227 ztemp = z1 * real(zhist[7]) elseif @histype == 228 ztemp = z1 * flip(imag(zhist[7])) elseif @histype == 229 ztemp = real(z1) - zhist[7] elseif @histype == 230 ztemp = flip(imag(z1)) - zhist[7] elseif @histype == 231 ztemp = real(z1) + zhist[7] elseif @histype == 232 ztemp = flip(imag(z1)) + zhist[7] elseif @histype == 233 ztemp = real(z1) * zhist[7] elseif @histype == 234 ztemp = flip(imag(z1)) * zhist[7] elseif @histype == 235 ztemp = (real(z1) * imag(zhist[7])) + flip((imag(z1) * real(zhist[7]))) elseif @histype == 236 ztemp = (real(z1) * imag(zhist[7])) - flip((imag(z1) * real(zhist[7]))) elseif @histype == 237 ztemp = (real(z1) * imag(zhist[7])) * flip((imag(z1) * real(zhist[7]))) elseif @histype == 238 ztemp = (imag(z1) * real(zhist[7])) + flip((real(z1) * imag(zhist[7]))) elseif @histype == 239 ztemp = (imag(z1) * real(zhist[7])) - flip((real(z1) * imag(zhist[7]))) elseif @histype == 240 ztemp = (imag(z1) * real(zhist[7])) * flip((real(z1) * imag(zhist[7]))) elseif @histype == 241 ztemp = (real(z1) + imag(zhist[7])) + flip((imag(z1) + real(zhist[7]))) elseif @histype == 242 ztemp = (real(z1) + imag(zhist[7])) - flip((imag(z1) + real(zhist[7]))) elseif @histype == 243 ztemp = (real(z1) + imag(zhist[7])) * flip((imag(z1) + real(zhist[7]))) elseif @histype == 244 ztemp = (imag(z1) + real(zhist[7])) + flip((real(z1) + imag(zhist[7]))) elseif @histype == 245 ztemp = (imag(z1) + real(zhist[7])) - flip((real(z1) + imag(zhist[7]))) elseif @histype == 246 ztemp = (imag(z1) + real(zhist[7])) * flip((real(z1) + imag(zhist[7]))) elseif @histype == 247 ztemp = (real(z1) - imag(zhist[7])) + flip((imag(z1) - real(zhist[7]))) elseif @histype == 248 ztemp = (real(z1) - imag(zhist[7])) - flip((imag(z1) - real(zhist[7]))) elseif @histype == 249 ztemp = (real(z1) - imag(zhist[7])) * flip((imag(z1) - real(zhist[7]))) elseif @histype == 250 ztemp = (imag(z1) - real(zhist[7])) + flip((real(z1) - imag(zhist[7]))) elseif @histype == 251 ztemp = (imag(z1) - real(zhist[7])) - flip((real(z1) - imag(zhist[7]))) elseif @histype == 252 ztemp = (imag(z1) - real(zhist[7])) * flip((real(z1) - imag(zhist[7]))) elseif @histype == 253 ztemp = zhist[8] elseif @histype == 254 ztemp = real(z1) + flip(imag(zhist[8])) elseif @histype == 255 ztemp = real(zhist[8]) + flip(imag(z1)) elseif @histype == 256 ztemp = z1 - zhist[8] elseif @histype == 257 ztemp = z1 - real(zhist[8]) elseif @histype == 258 ztemp = z1 - flip(imag(zhist[8])) elseif @histype == 259 ztemp = z1 + zhist[8] elseif @histype == 260 ztemp = z1 + real(zhist[8]) elseif @histype == 261 ztemp = z1 + flip(imag(zhist[8])) elseif @histype == 262 ztemp = z1 * zhist[8] elseif @histype == 263 ztemp = z1 * real(zhist[8]) elseif @histype == 264 ztemp = z1 * flip(imag(zhist[8])) elseif @histype == 265 ztemp = real(z1) - zhist[8] elseif @histype == 266 ztemp = flip(imag(z1)) - zhist[8] elseif @histype == 267 ztemp = real(z1) + zhist[8] elseif @histype == 268 ztemp = flip(imag(z1)) + zhist[8] elseif @histype == 269 ztemp = real(z1) * zhist[8] elseif @histype == 270 ztemp = flip(imag(z1)) * zhist[8] elseif @histype == 271 ztemp = (real(z1) * imag(zhist[8])) + flip((imag(z1) * real(zhist[8]))) elseif @histype == 272 ztemp = (real(z1) * imag(zhist[8])) - flip((imag(z1) * real(zhist[8]))) elseif @histype == 273 ztemp = (real(z1) * imag(zhist[8])) * flip((imag(z1) * real(zhist[8]))) elseif @histype == 274 ztemp = (imag(z1) * real(zhist[8])) + flip((real(z1) * imag(zhist[8]))) elseif @histype == 275 ztemp = (imag(z1) * real(zhist[8])) - flip((real(z1) * imag(zhist[8]))) elseif @histype == 276 ztemp = (imag(z1) * real(zhist[8])) * flip((real(z1) * imag(zhist[8]))) elseif @histype == 277 ztemp = (real(z1) + imag(zhist[8])) + flip((imag(z1) + real(zhist[8]))) elseif @histype == 278 ztemp = (real(z1) + imag(zhist[8])) - flip((imag(z1) + real(zhist[8]))) elseif @histype == 279 ztemp = (real(z1) + imag(zhist[8])) * flip((imag(z1) + real(zhist[8]))) elseif @histype == 280 ztemp = (imag(z1) + real(zhist[8])) + flip((real(z1) + imag(zhist[8]))) elseif @histype == 281 ztemp = (imag(z1) + real(zhist[8])) - flip((real(z1) + imag(zhist[8]))) elseif @histype == 282 ztemp = (imag(z1) + real(zhist[8])) * flip((real(z1) + imag(zhist[8]))) elseif @histype == 283 ztemp = (real(z1) - imag(zhist[8])) + flip((imag(z1) - real(zhist[8]))) elseif @histype == 284 ztemp = (real(z1) - imag(zhist[8])) - flip((imag(z1) - real(zhist[8]))) elseif @histype == 285 ztemp = (real(z1) - imag(zhist[8])) * flip((imag(z1) - real(zhist[8]))) elseif @histype == 286 ztemp = (imag(z1) - real(zhist[8])) + flip((real(z1) - imag(zhist[8]))) elseif @histype == 287 ztemp = (imag(z1) - real(zhist[8])) - flip((real(z1) - imag(zhist[8]))) elseif @histype == 288 ztemp = (imag(z1) - real(zhist[8])) * flip((real(z1) - imag(zhist[8]))) elseif @histype == 289 ztemp = zhist[9] elseif @histype == 290 ztemp = real(z1) + flip(imag(zhist[9])) elseif @histype == 291 ztemp = real(zhist[9]) + flip(imag(z1)) elseif @histype == 292 ztemp = z1 - zhist[9] elseif @histype == 293 ztemp = z1 - real(zhist[9]) elseif @histype == 294 ztemp = z1 - flip(imag(zhist[9])) elseif @histype == 295 ztemp = z1 + zhist[9] elseif @histype == 296 ztemp = z1 + real(zhist[9]) elseif @histype == 297 ztemp = z1 + flip(imag(zhist[9])) elseif @histype == 298 ztemp = z1 * zhist[9] elseif @histype == 299 ztemp = z1 * real(zhist[9]) elseif @histype == 300 ztemp = z1 * flip(imag(zhist[9])) elseif @histype == 301 ztemp = real(z1) - zhist[9] elseif @histype == 302 ztemp = flip(imag(z1)) - zhist[9] elseif @histype == 303 ztemp = real(z1) + zhist[9] elseif @histype == 304 ztemp = flip(imag(z1)) + zhist[9] elseif @histype == 305 ztemp = real(z1) * zhist[9] elseif @histype == 306 ztemp = flip(imag(z1)) * zhist[9] elseif @histype == 307 ztemp = (real(z1) * imag(zhist[9])) + flip((imag(z1) * real(zhist[9]))) elseif @histype == 308 ztemp = (real(z1) * imag(zhist[9])) - flip((imag(z1) * real(zhist[9]))) elseif @histype == 309 ztemp = (real(z1) * imag(zhist[9])) * flip((imag(z1) * real(zhist[9]))) elseif @histype == 310 ztemp = (imag(z1) * real(zhist[9])) + flip((real(z1) * imag(zhist[9]))) elseif @histype == 311 ztemp = (imag(z1) * real(zhist[9])) - flip((real(z1) * imag(zhist[9]))) elseif @histype == 312 ztemp = (imag(z1) * real(zhist[9])) * flip((real(z1) * imag(zhist[9]))) elseif @histype == 313 ztemp = (real(z1) + imag(zhist[9])) + flip((imag(z1) + real(zhist[9]))) elseif @histype == 314 ztemp = (real(z1) + imag(zhist[9])) - flip((imag(z1) + real(zhist[9]))) elseif @histype == 315 ztemp = (real(z1) + imag(zhist[9])) * flip((imag(z1) + real(zhist[9]))) elseif @histype == 316 ztemp = (imag(z1) + real(zhist[9])) + flip((real(z1) + imag(zhist[9]))) elseif @histype == 317 ztemp = (imag(z1) + real(zhist[9])) - flip((real(z1) + imag(zhist[9]))) elseif @histype == 318 ztemp = (imag(z1) + real(zhist[9])) * flip((real(z1) + imag(zhist[9]))) elseif @histype == 319 ztemp = (real(z1) - imag(zhist[9])) + flip((imag(z1) - real(zhist[9]))) elseif @histype == 320 ztemp = (real(z1) - imag(zhist[9])) - flip((imag(z1) - real(zhist[9]))) elseif @histype == 321 ztemp = (real(z1) - imag(zhist[9])) * flip((imag(z1) - real(zhist[9]))) elseif @histype == 322 ztemp = (imag(z1) - real(zhist[9])) + flip((real(z1) - imag(zhist[9]))) elseif @histype == 323 ztemp = (imag(z1) - real(zhist[9])) - flip((real(z1) - imag(zhist[9]))) elseif @histype == 324 ztemp = (imag(z1) - real(zhist[9])) * flip((real(z1) - imag(zhist[9]))) else ztemp = z1 endif ; histype else ztemp = z1 endif ; history if @absolutez ztemp = abs(ztemp) endif ; @absolutez if @absoluter ztemp = abs(real(ztemp)) + flip(imag(ztemp)) endif ; @absoluter if @absolutei ztemp = real(ztemp) + flip(abs(imag(ztemp))) endif ; @absolutei zangle = atan2(z1) if zangle < 0 zangle = zangle + twopi endif ; zangle ; Initialize front end real, front end imag, if desired ftemp = @rfscale * real(ztemp) if @absoluter2 ftemp = abs(ftemp) endif ; @absoluter2 if ( @realfront == 0 ) tempx = ftemp elseif ( @realfront == 1 ) tempx = 1/ftemp elseif ( @realfront == 2 ) tempx = ftemp * ftemp elseif ( @realfront == 3 ) tempx = 1 / ( ftemp * ftemp ) elseif ( @realfront == 4 ) tempx = log(ftemp) elseif ( @realfront == 5 ) tempx = exp( ftemp) elseif ( @realfront == 6 ) tempx = ftemp^ftemp elseif ( @realfront == 7 ) tempx = sin( ftemp ) elseif ( @realfront == 8 ) tempx = cos( ftemp ) elseif ( @realfront == 9 ) tempx = tan( ftemp ) elseif ( @realfront == 10 ) tempx = asin( ftemp ) elseif ( @realfront == 11 ) tempx = acos( ftemp ) elseif ( @realfront == 12 ) tempx = atan( ftemp ) elseif ( @realfront == 13 ) tempx = sinh( ftemp ) elseif ( @realfront == 14 ) tempx = cosh( ftemp ) elseif ( @realfront == 15 ) tempx = tanh( ftemp ) elseif ( @realfront == 16 ) tempx = asinh( ftemp ) elseif ( @realfront == 17 ) tempx = acosh( ftemp ) elseif ( @realfront == 18 ) tempx = atanh( ftemp ) elseif ( @realfront == 19 ) tempx = log( 1/ftemp ) elseif ( @realfront == 20 ) tempx = log( log( ftemp )) elseif ( @realfront == 21 ) tempx = exp( -ftemp ) elseif ( @realfront == 22 ) tempx = exp( 1/ftemp ) elseif ( @realfront == 23 ) tempx = ftemp^(-ftemp) elseif ( @realfront == 24 ) tempx = sin( ftemp ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( ftemp ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( ftemp ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( ftemp ) elseif ( @realfront == 28 ) tempx = 1/cos( ftemp ) elseif ( @realfront == 29 ) tempx = 1/sin( ftemp ) elseif ( @realfront == 30 ) tempx = cotan( ftemp ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( ftemp ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( ftemp ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = ftemp^(ftemp) tempx = ftemp^tempx elseif ( @realfront == 34 ) tempx = ftemp^(ftemp) tempx = 1/( ftemp^tempx ) elseif ( @realfront == 35 ) tempx = log(-ftemp) elseif ( @realfront == 36 ) tempx = 1/log( ftemp ) elseif ( @realfront == 37 ) tempx = ftemp * log( ftemp ) elseif ( @realfront == 38 ) tempx = sin( ftemp ) / ftemp elseif ( @realfront == 39 ) tempx = cos( ftemp ) / ftemp elseif ( @realfront == 40 ) tempx = sin( ftemp ) * cos( ftemp ) elseif ( @realfront == 41 ) tempx = sin( ftemp^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/ftemp ) elseif ( @realfront == 43 ) tempx = ftemp * exp( ftemp ) elseif ( @realfront == 44 ) tempx = ftemp * exp( -ftemp ) elseif ( @realfront == 45 ) tempx = ftemp * exp( 1/ftemp ) elseif ( @realfront == 46 ) tempx = ftemp * exp( -1/ftemp ) elseif ( @realfront == 47 ) tempx = ftemp * ftemp * ftemp elseif ( @realfront == 48 ) tempx = 1 / ( ftemp * ftemp * ftemp ) elseif ( @realfront == 49 ) tempx = atan( 1 / ftemp ) elseif ( @realfront == 50 ) tempx = acos( 1 / ftemp ) elseif ( @realfront == 51 ) tempx = asin( 1 / ftemp ) elseif ( @realfront == 52 ) tempx = tan( ftemp ) / ftemp elseif ( @realfront == 53 ) tempx = cotan( ftemp ) / ftemp elseif ( @realfront == 54 ) tempx = 1 / ( ftemp * cos( ftemp )) elseif ( @realfront == 55 ) tempx = 1 / ( ftemp * sin( ftemp )) elseif ( @realfront == 56 ) tempx = ftemp * sin( ftemp ) elseif ( @realfront == 57 ) tempx = ftemp * cos( ftemp ) elseif ( @realfront == 58 ) tempx = ftemp * tan( ftemp ) elseif ( @realfront == 59 ) tempx = ftemp * cotan( ftemp ) elseif ( @realfront == 60 ) tempx = ftemp/cos( ftemp ) elseif ( @realfront == 61 ) tempx = ftemp/sin( ftemp ) elseif ( @realfront == 62 ) tempx = sin( 1/ftemp ) elseif ( @realfront == 63 ) tempx = cos( 1/ftemp ) elseif ( @realfront == 64 ) tempx = tan( 1/ftemp ) elseif ( @realfront == 65 ) tempx = cotan( 1/ftemp ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/ftemp ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/ftemp ) elseif ( @realfront == 68 ) tempx = cotanh( ftemp ) elseif ( @realfront == 69 ) tempx = 1/cosh( ftemp ) elseif ( @realfront == 70 ) tempx = 1/sinh( ftemp ) elseif ( @realfront == 71 ) tempx = atanh( 1/ftemp ) elseif ( @realfront == 72 ) tempx = acosh( 1/ftemp ) elseif ( @realfront == 73 ) tempx = asinh( 1/ftemp ) elseif @realfront == 74 tempx = ftemp^@rfpower elseif @realfront == 75 tempx = sinh(ftemp) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( ftemp ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(ftemp) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( ftemp ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(ftemp) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( ftemp ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/ftemp) elseif @realfront == 82 tempx = cosh(1/ftemp) elseif @realfront == 83 tempx = tanh(1/ftemp) elseif @realfront == 84 tempx = cotanh(1/ftemp) elseif @realfront == 85 tempx = 1/cosh(1/ftemp) elseif @realfront == 86 tempx = 1/sinh(1/ftemp) elseif @realfront == 87 tempx = sin( ftemp ) * tan(ftemp) elseif @realfront == 88 tempx = sinh(ftemp) * tanh(ftemp) elseif @realfront == 89 tempx = sinh(ftemp) * cosh(ftemp) elseif @realfront == 90 tempx = sinh(ftemp), ftemp2 = cosh(ftemp) tempx = tempx*tempx*ftemp2*ftemp2 elseif @realfront == 91 tempx = sin(ftemp), ftemp2 = cos(ftemp) tempx = tempx*tempx*ftemp2*ftemp2 elseif @realfront == 92 tempx = 1/ftemp tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/ftemp ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(ftemp) * cos(1/ftemp) elseif @realfront == 95 tempx = sin(ftemp) * sin(1/ftemp) elseif @realfront == 96 tempx = log(ftemp) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(ftemp) * sin(2*ftemp) elseif @realfront == 98 tempx = exp(2*ftemp) elseif @realfront == 99 tempx = exp(-2*ftemp) elseif @realfront == 100 tempx = 1/ftemp tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/ftemp ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(ftemp) * cosh(1/ftemp) elseif @realfront == 103 tempx = sinh(ftemp) * sinh(1/ftemp) elseif @realfront == 104 tempx = sin(ftemp) * sinh(ftemp) elseif @realfront == 105 tempx = sin(ftemp) * cosh(ftemp) elseif @realfront == 106 tempx = sin(ftemp), ftemp2 = sinh(ftemp) tempx = tempx*tempx*ftemp2*ftemp2 elseif @realfront == 107 tempx = sin(ftemp)*exp(ftemp) elseif @realfront == 108 tempx = cos(ftemp)*exp(ftemp) elseif @realfront == 109 tempx = sinh(ftemp)*exp(ftemp) elseif @realfront == 110 tempx = cosh(ftemp)*exp(ftemp) elseif @realfront == 111 tempx = sin(ftemp)*log(ftemp) elseif @realfront == 112 tempx = cos(ftemp)*log(ftemp) elseif @realfront == 113 tempx = sinh(ftemp)*log(ftemp) elseif @realfront == 114 tempx = cosh(ftemp)*log(ftemp) elseif @realfront == 115 tempx = exp(ftemp^2) elseif @realfront == 116 tempx = exp(1/(ftemp^2)) elseif @realfront == 117 tempx = abs(ftemp) elseif @realfront == 118 tempx = round(ftemp) elseif @realfront == 119 tempx = trunc(ftemp) elseif @realfront == 120 tempx = ceil(ftemp) elseif @realfront == 121 tempx = floor(ftemp) elseif @realfront == 122 tempx = ftemp/log(ftemp) elseif @realfront == 123 tempx = log(ftemp)/ftemp elseif @realfront == 124 tempx = exp(ftemp)/ftemp elseif @realfront == 125 tempx = exp(1/ftemp)/ftemp elseif @realfront == 126 tempx = exp(ftemp^2)/ftemp elseif @realfront == 127 tempx = exp(1/(ftemp^2))/ftemp elseif @realfront == 128 tempx = ftemp * exp(ftemp^2) elseif @realfront == 129 tempx = ftemp * exp(1/(ftemp^2)) elseif @realfront == 130 tempx = exp(-(ftemp^2)) elseif @realfront == 131 tempx = exp(-1/(ftemp^2)) elseif @realfront == 132 tempx = exp(-(ftemp^2))/ftemp elseif @realfront == 133 tempx = exp(-1/(ftemp^2))/ftemp elseif @realfront == 134 tempx = ftemp * exp(-(ftemp^2)) else ; @realfront == 135 tempx = ftemp * exp(-1/(ftemp^2)) endif ; realfront if @absoluter3 tempx = abs(tempx) endif ; @absoluter3 if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(ztemp) endif ; @rfperturb ftemp = @ifscale * imag(ztemp) if @absolutei2 ftemp = abs(ftemp) endif ; @absolutei2 if ( @imagfront == 0 ) tempy = ftemp elseif ( @imagfront == 1 ) tempy = 1/ftemp elseif ( @imagfront == 2 ) tempy = ftemp * ftemp elseif ( @imagfront == 3 ) tempy = 1 / ( ftemp * ftemp ) elseif ( @imagfront == 4 ) tempy = log(ftemp) elseif ( @imagfront == 5 ) tempy = exp( ftemp) elseif ( @imagfront == 6 ) tempy = ftemp^ftemp elseif ( @imagfront == 7 ) tempy = sin( ftemp ) elseif ( @imagfront == 8 ) tempy = cos( ftemp ) elseif ( @imagfront == 9 ) tempy = tan( ftemp ) elseif ( @imagfront == 10 ) tempy = asin( ftemp ) elseif ( @imagfront == 11 ) tempy = acos( ftemp ) elseif ( @imagfront == 12 ) tempy = atan( ftemp ) elseif ( @imagfront == 13 ) tempy = sinh( ftemp ) elseif ( @imagfront == 14 ) tempy = cosh( ftemp ) elseif ( @imagfront == 15 ) tempy = tanh( ftemp ) elseif ( @imagfront == 16 ) tempy = asinh( ftemp ) elseif ( @imagfront == 17 ) tempy = acosh( ftemp ) elseif ( @imagfront == 18 ) tempy = atanh( ftemp ) elseif ( @imagfront == 19 ) tempy = log( 1/ftemp ) elseif ( @imagfront == 20 ) tempy = log( log( ftemp )) elseif ( @imagfront == 21 ) tempy = exp( -ftemp ) elseif ( @imagfront == 22 ) tempy = exp( 1/ftemp ) elseif ( @imagfront == 23 ) tempy = ftemp^(-ftemp) elseif ( @imagfront == 24 ) tempy = sin( ftemp ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( ftemp ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( ftemp ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( ftemp ) elseif ( @imagfront == 28 ) tempy = 1/cos( ftemp ) elseif ( @imagfront == 29 ) tempy = 1/sin( ftemp ) elseif ( @imagfront == 30 ) tempy = cotan( ftemp ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( ftemp ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( ftemp ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = ftemp^(ftemp) tempy = ftemp^tempy elseif ( @imagfront == 34 ) tempy = ftemp^(ftemp) tempy = 1/( ftemp^tempy ) elseif ( @imagfront == 35 ) tempy = log(-ftemp) elseif ( @imagfront == 36 ) tempy = 1/log( ftemp ) elseif ( @imagfront == 37 ) tempy = ftemp * log( ftemp ) elseif ( @imagfront == 38 ) tempy = sin( ftemp ) / ftemp elseif ( @imagfront == 39 ) tempy = cos( ftemp ) / ftemp elseif ( @imagfront == 40 ) tempy = sin( ftemp ) * cos( ftemp ) elseif ( @imagfront == 41 ) tempy = sin( ftemp^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/ftemp ) elseif ( @imagfront == 43 ) tempy = ftemp * exp( ftemp ) elseif ( @imagfront == 44 ) tempy = ftemp * exp( -ftemp ) elseif ( @imagfront == 45 ) tempy = ftemp * exp( 1/ftemp ) elseif ( @imagfront == 46 ) tempy = ftemp * exp( -1/ftemp ) elseif ( @imagfront == 47 ) tempy = ftemp * ftemp * ftemp elseif ( @imagfront == 48 ) tempy = 1 / ( ftemp * ftemp * ftemp ) elseif ( @imagfront == 49 ) tempy = atan( 1 / ftemp ) elseif ( @imagfront == 50 ) tempy = acos( 1 / ftemp ) elseif ( @imagfront == 51 ) tempy = asin( 1 / ftemp ) elseif ( @imagfront == 52 ) tempy = tan( ftemp ) / ftemp elseif ( @imagfront == 53 ) tempy = cotan( ftemp ) / ftemp elseif ( @imagfront == 54 ) tempy = 1 / ( ftemp * cos( ftemp )) elseif ( @imagfront == 55 ) tempy = 1 / ( ftemp * sin( ftemp )) elseif ( @imagfront == 56 ) tempy = ftemp * sin( ftemp ) elseif ( @imagfront == 57 ) tempy = ftemp * cos( ftemp ) elseif ( @imagfront == 58 ) tempy = ftemp * tan( ftemp ) elseif ( @imagfront == 59 ) tempy = ftemp * cotan( ftemp ) elseif ( @imagfront == 60 ) tempy = ftemp/cos( ftemp ) elseif ( @imagfront == 61 ) tempy = ftemp/sin( ftemp ) elseif ( @imagfront == 62 ) tempy = sin( 1/ftemp ) elseif ( @imagfront == 63 ) tempy = cos( 1/ftemp ) elseif ( @imagfront == 64 ) tempy = tan( 1/ftemp ) elseif ( @imagfront == 65 ) tempy = cotan( 1/ftemp ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/ftemp ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/ftemp ) elseif ( @imagfront == 68 ) tempy = cotanh( ftemp ) elseif ( @imagfront == 69 ) tempy = 1/cosh( ftemp ) elseif ( @imagfront == 70 ) tempy = 1/sinh( ftemp ) elseif ( @imagfront == 71 ) tempy = atanh( 1/ftemp ) elseif ( @imagfront == 72 ) tempy = acosh( 1/ftemp ) elseif ( @imagfront == 73 ) tempy = asinh( 1/ftemp ) elseif @imagfront == 74 tempy = ftemp^@ifpower elseif @imagfront == 75 tempy = sinh(ftemp) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( ftemp ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(ftemp) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( ftemp ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(ftemp) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( ftemp ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/ftemp) elseif @imagfront == 82 tempy = cosh(1/ftemp) elseif @imagfront == 83 tempy = tanh(1/ftemp) elseif @imagfront == 84 tempy = cotanh(1/ftemp) elseif @imagfront == 85 tempy = 1/cosh(1/ftemp) elseif @imagfront == 86 tempy = 1/sinh(1/ftemp) elseif @imagfront == 87 tempy = sin( ftemp ) * tan(ftemp) elseif @imagfront == 88 tempy = sinh(ftemp) * tanh(ftemp) elseif @imagfront == 89 tempy = sinh(ftemp) * cosh(ftemp) elseif @imagfront == 90 tempy = sinh(ftemp), ftemp2 = cosh(ftemp) tempy = tempy*tempy*ftemp2*ftemp2 elseif @imagfront == 91 tempy = sin(ftemp), ftemp2 = cos(ftemp) tempy = tempy*tempy*ftemp2*ftemp2 elseif @imagfront == 92 tempy = 1/ftemp tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/ftemp ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(ftemp) * cos(1/ftemp) elseif @imagfront == 95 tempy = sin(ftemp) * sin(1/ftemp) elseif @imagfront == 96 tempy = log(ftemp) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(ftemp) * sin(2*ftemp) elseif @imagfront == 98 tempy = exp(2*ftemp) elseif @imagfront == 99 tempy = exp(-2*ftemp) elseif @imagfront == 100 tempy = 1/ftemp tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/ftemp ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(ftemp) * cosh(1/ftemp) elseif @imagfront == 103 tempy = sinh(ftemp) * sinh(1/ftemp) elseif @imagfront == 104 tempy = sin(ftemp) * sinh(ftemp) elseif @imagfront == 105 tempy = sin(ftemp) * cosh(ftemp) elseif @imagfront == 106 tempy = sin(ftemp), ftemp2 = sinh(ftemp) tempy = tempy*tempy*ftemp2*ftemp2 elseif @imagfront == 107 tempy = sin(ftemp)*exp(ftemp) elseif @imagfront == 108 tempy = cos(ftemp)*exp(ftemp) elseif @imagfront == 109 tempy = sinh(ftemp)*exp(ftemp) elseif @imagfront == 110 tempy = cosh(ftemp)*exp(ftemp) elseif @imagfront == 111 tempy = sin(ftemp)*log(ftemp) elseif @imagfront == 112 tempy = cos(ftemp)*log(ftemp) elseif @imagfront == 113 tempy = sinh(ftemp)*log(ftemp) elseif @imagfront == 114 tempy = cosh(ftemp)*log(ftemp) elseif @imagfront == 115 tempy = exp(ftemp^2) elseif @imagfront == 116 tempy = exp(1/(ftemp^2)) elseif @imagfront == 117 tempy = abs(ftemp) elseif @imagfront == 118 tempy = round(ftemp) elseif @imagfront == 119 tempy = trunc(ftemp) elseif @imagfront == 120 tempy = ceil(ftemp) elseif @imagfront == 121 tempy = floor(ftemp) elseif @imagfront == 122 tempy = ftemp/log(ftemp) elseif @imagfront == 123 tempy = log(ftemp)/ftemp elseif @imagfront == 124 tempy = exp(ftemp)/ftemp elseif @imagfront == 125 tempy = exp(1/ftemp)/ftemp elseif @imagfront == 126 tempy = exp(ftemp^2)/ftemp elseif @imagfront == 127 tempy = exp(1/(ftemp^2))/ftemp elseif @imagfront == 128 tempy = ftemp * exp(ftemp^2) elseif @imagfront == 129 tempy = ftemp * exp(1/(ftemp^2)) elseif @imagfront == 130 tempy = exp(-(ftemp^2)) elseif @imagfront == 131 tempy = exp(-1/(ftemp^2)) elseif @imagfront == 132 tempy = exp(-(ftemp^2))/ftemp elseif @imagfront == 133 tempy = exp(-1/(ftemp^2))/ftemp elseif @imagfront == 134 tempy = ftemp * exp(-(ftemp^2)) else ; @imagfront == 135 tempy = ftemp * exp(-1/(ftemp^2)) endif ; imagfront if @absolutei3 tempy = abs(tempy) endif ; @absolutei3 if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(ztemp) endif ; @ifperturb ztemp = tempx + flip(tempy) ; Initialize z, if desired ztemp = @ziscale * ztemp if ( @initialization == 0 ) zinput = ztemp elseif ( @initialization == 1 ) zinput = 1/ztemp elseif ( @initialization == 2 ) zinput = ztemp * ztemp elseif ( @initialization == 3 ) zinput = 1 / ( ztemp * ztemp ) elseif ( @initialization == 4 ) zinput = log(ztemp) elseif ( @initialization == 5 ) zinput = exp( ztemp) elseif ( @initialization == 6 ) zinput = ztemp^ztemp elseif ( @initialization == 7 ) zinput = sin( ztemp ) elseif ( @initialization == 8 ) zinput = cos( ztemp ) elseif ( @initialization == 9 ) zinput = tan( ztemp ) elseif ( @initialization == 10 ) zinput = asin( ztemp ) elseif ( @initialization == 11 ) zinput = acos( ztemp ) elseif ( @initialization == 12 ) zinput = atan( ztemp ) elseif ( @initialization == 13 ) zinput = sinh( ztemp ) elseif ( @initialization == 14 ) zinput = cosh( ztemp ) elseif ( @initialization == 15 ) zinput = tanh( ztemp ) elseif ( @initialization == 16 ) zinput = asinh( ztemp ) elseif ( @initialization == 17 ) zinput = acosh( ztemp ) elseif ( @initialization == 18 ) zinput = atanh( ztemp ) elseif ( @initialization == 19 ) zinput = log( 1/ztemp ) elseif ( @initialization == 20 ) zinput = log( log( ztemp )) elseif ( @initialization == 21 ) zinput = exp( -ztemp ) elseif ( @initialization == 22 ) zinput = exp( 1/ztemp ) elseif ( @initialization == 23 ) zinput = ztemp^(-ztemp) elseif ( @initialization == 24 ) zinput = sin( ztemp ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( ztemp ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( ztemp ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( ztemp ) elseif ( @initialization == 28 ) zinput = 1/cos( ztemp ) elseif ( @initialization == 29 ) zinput = 1/sin( ztemp ) elseif ( @initialization == 30 ) zinput = cotan( ztemp ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( ztemp ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( ztemp ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = ztemp^(ztemp) zinput = ztemp^zinput elseif ( @initialization == 34 ) zinput = ztemp^(ztemp) zinput = 1/( ztemp^zinput ) elseif ( @initialization == 35 ) zinput = log(-ztemp) elseif ( @initialization == 36 ) zinput = 1/log( ztemp ) elseif ( @initialization == 37 ) zinput = ztemp * log( ztemp ) elseif ( @initialization == 38 ) zinput = sin( ztemp ) / ztemp elseif ( @initialization == 39 ) zinput = cos( ztemp ) / ztemp elseif ( @initialization == 40 ) zinput = sin( ztemp ) * cos( ztemp ) elseif ( @initialization == 41 ) zinput = sin( ztemp^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/ztemp ) elseif ( @initialization == 43 ) zinput = ztemp * exp( ztemp ) elseif ( @initialization == 44 ) zinput = ztemp * exp( -ztemp ) elseif ( @initialization == 45 ) zinput = ztemp * exp( 1/ztemp ) elseif ( @initialization == 46 ) zinput = ztemp * exp( -1/ztemp ) elseif ( @initialization == 47 ) zinput = ztemp * ztemp * ztemp elseif ( @initialization == 48 ) zinput = 1 / ( ztemp * ztemp * ztemp ) elseif ( @initialization == 49 ) zinput = atan( 1 / ztemp ) elseif ( @initialization == 50 ) zinput = acos( 1 / ztemp ) elseif ( @initialization == 51 ) zinput = asin( 1 / ztemp ) elseif ( @initialization == 52 ) zinput = tan( ztemp ) / ztemp elseif ( @initialization == 53 ) zinput = cotan( ztemp ) / ztemp elseif ( @initialization == 54 ) zinput = 1 / ( ztemp * cos( ztemp )) elseif ( @initialization == 55 ) zinput = 1 / ( ztemp * sin( ztemp )) elseif ( @initialization == 56 ) zinput = ztemp * sin( ztemp ) elseif ( @initialization == 57 ) zinput = ztemp * cos( ztemp ) elseif ( @initialization == 58 ) zinput = ztemp * tan( ztemp ) elseif ( @initialization == 59 ) zinput = ztemp * cotan( ztemp ) elseif ( @initialization == 60 ) zinput = ztemp/cos( ztemp ) elseif ( @initialization == 61 ) zinput = ztemp/sin( ztemp ) elseif ( @initialization == 62 ) zinput = sin( 1/ztemp ) elseif ( @initialization == 63 ) zinput = cos( 1/ztemp ) elseif ( @initialization == 64 ) zinput = tan( 1/ztemp ) elseif ( @initialization == 65 ) zinput = cotan( 1/ztemp ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/ztemp ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/ztemp ) elseif ( @initialization == 68 ) zinput = cotanh( ztemp ) elseif ( @initialization == 69 ) zinput = 1/cosh( ztemp ) elseif ( @initialization == 70 ) zinput = 1/sinh( ztemp ) elseif ( @initialization == 71 ) zinput = atanh( 1/ztemp ) elseif ( @initialization == 72 ) zinput = acosh( 1/ztemp ) elseif ( @initialization == 73 ) zinput = asinh( 1/ztemp ) elseif @initialization == 74 zinput = ztemp^@zpower elseif @initialization == 75 zinput = sinh(ztemp) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( ztemp ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(ztemp) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( ztemp ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(ztemp) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( ztemp ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/ztemp) elseif @initialization == 82 zinput = cosh(1/ztemp) elseif @initialization == 83 zinput = tanh(1/ztemp) elseif @initialization == 84 zinput = cotanh(1/ztemp) elseif @initialization == 85 zinput = 1/cosh(1/ztemp) elseif @initialization == 86 zinput = 1/sinh(1/ztemp) elseif @initialization == 87 zinput = sin( ztemp ) * tan(ztemp) elseif @initialization == 88 zinput = sinh(ztemp) * tanh(ztemp) elseif @initialization == 89 zinput = sinh(ztemp) * cosh(ztemp) elseif @initialization == 90 zinput = sinh(ztemp), ztemp2 = cosh(ztemp) zinput = zinput*zinput*ztemp2*ztemp2 elseif @initialization == 91 zinput = sin(ztemp), ztemp2 = cos(ztemp) zinput = zinput*zinput*ztemp2*ztemp2 elseif @initialization == 92 zinput = 1/ztemp zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/ztemp ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(ztemp) * cos(1/ztemp) elseif @initialization == 95 zinput = sin(ztemp) * sin(1/ztemp) elseif @initialization == 96 zinput = log(ztemp) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(ztemp) * sin(2*ztemp) elseif @initialization == 98 zinput = exp(2*ztemp) elseif @initialization == 99 zinput = exp(-2*ztemp) elseif @initialization == 100 zinput = 1/ztemp zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/ztemp ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(ztemp) * cosh(1/ztemp) elseif @initialization == 103 zinput = sinh(ztemp) * sinh(1/ztemp) elseif @initialization == 104 zinput = sin(ztemp) * sinh(ztemp) elseif @initialization == 105 zinput = sin(ztemp) * cosh(ztemp) elseif @initialization == 106 zinput = sin(ztemp), ztemp2 = sinh(ztemp) zinput = zinput*zinput*ztemp2*ztemp2 elseif @initialization == 107 zinput = sin(ztemp)*exp(ztemp) elseif @initialization == 108 zinput = cos(ztemp)*exp(ztemp) elseif @initialization == 109 zinput = sinh(ztemp)*exp(ztemp) elseif @initialization == 110 zinput = cosh(ztemp)*exp(ztemp) elseif @initialization == 111 zinput = sin(ztemp)*log(ztemp) elseif @initialization == 112 zinput = cos(ztemp)*log(ztemp) elseif @initialization == 113 zinput = sinh(ztemp)*log(ztemp) elseif @initialization == 114 zinput = cosh(ztemp)*log(ztemp) elseif @initialization == 115 zinput = exp(ztemp^2) elseif @initialization == 116 zinput = exp(1/(ztemp^2)) elseif @initialization == 117 zinput = abs(ztemp) elseif @initialization == 118 zinput = round(ztemp) elseif @initialization == 119 zinput = trunc(ztemp) elseif @initialization == 120 zinput = ceil(ztemp) elseif @initialization == 121 zinput = floor(ztemp) elseif @initialization == 122 zinput = ztemp/log(ztemp) elseif @initialization == 123 zinput = log(ztemp)/ztemp elseif @initialization == 124 zinput = exp(ztemp)/ztemp elseif @initialization == 125 zinput = exp(1/ztemp)/ztemp elseif @initialization == 126 zinput = exp(ztemp^2)/ztemp elseif @initialization == 127 zinput = exp(1/(ztemp^2))/ztemp elseif @initialization == 128 zinput = ztemp * exp(ztemp^2) elseif @initialization == 129 zinput = ztemp * exp(1/(ztemp^2)) elseif @initialization == 130 zinput = exp(-(ztemp^2)) elseif @initialization == 131 zinput = exp(-1/(ztemp^2)) elseif @initialization == 132 zinput = exp(-(ztemp^2))/ztemp elseif @initialization == 133 zinput = exp(-1/(ztemp^2))/ztemp elseif @initialization == 134 zinput = ztemp * exp(-(ztemp^2)) else ; @initialization == 135 zinput = ztemp * exp(-1/(ztemp^2)) endif ; initialization if @absolutez2 zinput = abs(zinput) endif ; @absolutez2 if @absoluter4 zinput = abs(real(zinput)) + flip(imag(zinput)) endif ; @absoluter4 if @absolutei4 zinput = real(zinput) + flip(abs(imag(zinput))) endif ; @absolutei4 if @initperturb zinput = @initblend * zinput + initbcomp * ztemp endif ; @ifperturb if @trapvariant != 0 if @swaporder if @trapvariant == 1 ; flip zinput = flip(zinput) elseif @trapvariant == 2 ; conjugate zinput = conj(zinput) elseif @trapvariant == 3 ; flip conjugate zinput = flip(conj(zinput)) elseif @trapvariant == 4 ; negate zinput = -zinput elseif @trapvariant == 5 ; negate flip zinput = -flip(zinput) elseif @trapvariant == 6 ; negate conjugate zinput = -conj(zinput) elseif @trapvariant == 7 ; negate flip conj = conj flip zinput = -flip(conj(zinput)) endif ; trapvariant2 endif ; swaporder endif ; trapvariant1 if @operator != 0 if @operator == 1 ; multiplication zinput = zinput * @operatee elseif @operator == 2 ; addition zinput = zinput + @operatee elseif @operator == 3 ; subtraction zinput = zinput - @operatee elseif @operator == 4 ; division zinput = zinput / @operatee elseif @operator == 5 ; exponentiation zinput = zinput ^ @operatee elseif @operator == 6 ; subtraction2 zinput = @operatee - zinput elseif @operator == 7 ; division2 zinput = @operatee / zinput elseif @operator == 8 ; exponential2 zinput = @operatee ^ zinput elseif @operator == 9 ; logarithm zinput = log(zinput) / log(@operatee) elseif @operator == 10 ; logarithm2 zinput = log(@operatee) / log(zinput) endif ; operator2 endif ; operator1 if @trapvariant != 0 if !@swaporder if @trapvariant == 1 ; flip zinput = flip(zinput) elseif @trapvariant == 2 ; conjugate zinput = conj(zinput) elseif @trapvariant == 3 ; flip conjugate zinput = flip(conj(zinput)) elseif @trapvariant == 4 ; negate zinput = -zinput elseif @trapvariant == 5 ; negate flip zinput = -flip(zinput) elseif @trapvariant == 6 ; negate conjugate zinput = -conj(zinput) elseif @trapvariant == 7 ; negate flip conj = conj flip zinput = -flip(conj(zinput)) endif ; trapvariant2 endif ; swaporder endif ; trapvariant1 ; Finished front end modulating initializations ; Find coordinates and angle of point on trap graph closest to zinput (i.e., modified z1) ; First, center zinput on the trap center zinput = zinput - center ; Compute rotated zinput if rotation != 0.0 zinput = zinput * exp(flip(rotation)) endif ; rotation if @absolutez3 zinput = abs(zinput) endif ; @absolutez3 if @absoluter5 zinput = abs(real(zinput)) + flip(imag(zinput)) endif ; @absoluter5 if @absolutei5 zinput = real(zinput) + flip(abs(imag(zinput))) endif ; @absolutei5 ; Now find angle of 'rotated' zinput tempangle = atan2( zinput ) if ( tempangle < 0 ) tempangle = tempangle + twopi ; 0 <= tempangle <= two pi endif ; tempangle ; Spread out and offset angle of zinput, if desired ; Note that, with the offset, we can no longer count on non-negative angles if @offsetangle tempangle = tempangle + @offsetfactor endif ; @offsetangle if @sprangle tempangle = tempangle*@sprangfactor endif ; @sprangle if @screwmode != 0 if @absolutelyscrewy ztemp = abs(zinput) else ztemp = zinput endif ; @absolutelyscrewy if @screwmode == 1 tempangle = tempangle*real(ztemp) elseif @screwmode == 2 tempangle = tempangle*imag(ztemp) elseif @screwmode == 3 tempangle = real(ztemp) elseif @screwmode == 4 tempangle = imag(ztemp) elseif @screwmode == 5 tempangle = tempangle + real(ztemp) elseif @screwmode == 6 tempangle = tempangle + imag(ztemp) elseif @screwmode == 7 tempangle = real(ztemp) - tempangle elseif @screwmode == 8 tempangle = imag(ztemp) - tempangle elseif @screwmode == 9 tempangle = tempangle*real(ztemp)*imag(ztemp) endif ; @screwmode endif ; @screwmode ; Big trap loop begins here!!! index = 0 ; this var tracks how many times through each of the two subloops (func & osc set loops) index2 = 0 ; this var is a pointer into the various func/osc/result arrays while index < numberoffuncs if absoluteangle[index2] tempangle2 = abs(tempangle) else tempangle2 = tempangle endif ; absoluteangle[] ; Find trap function values ; Broken into ranges to keep the number of comparisons manageable regardless of ; the value of trapfunc[] if trapfunc[index2] < 22 if ( trapfunc[index2] == 0 ) ; nothing but optional scaling result[index2] = tempangle2 elseif ( trapfunc[index2] == 1 ) ; reciprocal result[index2] = 1/tempangle2 elseif ( trapfunc[index2] == 2 ) ;square result[index2] = tempangle2*tempangle2 elseif ( trapfunc[index2] == 3 ) ; recip sqr result[index2] = 1 / (tempangle2*tempangle2) elseif ( trapfunc[index2] == 4 ) ; log result[index2] = log(const[index2,0]*tempangle2) elseif ( trapfunc[index2] == 5 ) ; e^angle result[index2] = exp(const[index2,0]* tempangle2) elseif ( trapfunc[index2] == 6 ) ; angle^angle result[index2] = tempangle2^(const[index2,0]*tempangle2) elseif ( trapfunc[index2] == 7 ) ; sine result[index2] = sin( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 8 ) ; cosine result[index2] = cos( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 9 ) ; tangent result[index2] = tan( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 10 ) ; arcsine result[index2] = asin( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 11 ) ; arccosine result[index2] = acos( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 12 ) ; arctangent result[index2] = atan( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 13 ) ; hyperbolic sine result[index2] = sinh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 14 ) ; hyperbolic cosine result[index2] = cosh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 15 ) ; hyp tangent result[index2] = tanh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 16 ) ; hyperbolic arcsin result[index2] = asinh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 17 ) ; arccosh result[index2] = acosh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 18 ) ; arctanh result[index2] = atanh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 19 ) ; log(recip angle) result[index2] = log( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 20 ) ; log(log) result[index2] = log( const[index2,1] * log( const[index2,0]*tempangle2 )) else ; ( trapfunc[index2] == 21 ) ; e^(recip angle) result[index2] = exp( const[index2,0]/tempangle2 ) endif ; trapfunc[index2]<22 elseif trapfunc[index2] < 45 if ( trapfunc[index2] == 22 ) ; sine ^ power result[index2] = sin( const[index2,0]*tempangle2 ) ^ const[index2,1] elseif ( trapfunc[index2] == 23 ) ; cos ^ power result[index2] = cos( const[index2,0]*tempangle2 ) ^ const[index2,1] elseif ( trapfunc[index2] == 24 ) ; tan ^ power result[index2] = tan( const[index2,0]*tempangle2 ) ^ const[index2,1] elseif ( trapfunc[index2] == 25 ) ; cotangent result[index2] = cotan( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 26 ) ; secant result[index2] = 1/cos( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 27 ) ; cosecant result[index2] = 1/sin( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 28 ) ;cotan ^ power result[index2] = cotan( const[index2,0]*tempangle2 ) ^ const[index2,1] elseif ( trapfunc[index2] == 29 ) ; sec ^ power result[index2] = (1/cos( const[index2,0]*tempangle2 )) ^ const[index2,1] elseif ( trapfunc[index2] == 30 ) ; cosec ^ power result[index2] = (1/sin( const[index2,0]*tempangle2 )) ^ const[index2,1] elseif ( trapfunc[index2] == 31 ) ; a^a^a ftemp = tempangle2^(const[index2,0]*tempangle2) result[index2] = tempangle2^(const[index2,1]*ftemp) elseif ( trapfunc[index2] == 32 ) ; recip a^a^a ftemp = tempangle2^(const[index2,0]*tempangle2) result[index2] = 1/( tempangle2^(const[index2,1]*ftemp) ) elseif ( trapfunc[index2] == 33 ) ; recip log result[index2] = 1/log( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 34 ) ; angle*log(angle) result[index2] = tempangle2 * log( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 35 ) ; sin(a)/a result[index2] = sin( const[index2,0]*tempangle2 ) / tempangle2 elseif ( trapfunc[index2] == 36 ) ; cos(a)/a result[index2] = cos( const[index2,0]*tempangle2 ) / tempangle2 elseif ( trapfunc[index2] == 37 ) ; sin*cos result[index2] = sin( const[index2,0]*tempangle2 ) * cos( const[index2,1]*tempangle2 ) elseif ( trapfunc[index2] == 38 ) ; sin( a^n ) result[index2] = sin(const[index2,1]*(tempangle2^const[index2,0])) elseif ( trapfunc[index2] == 39 ) ; a* e^a result[index2] = tempangle2 * exp( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 40 ) ; a* e^(recip a) result[index2] = tempangle2 * exp( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 41 ) ; arccotan result[index2] = atan( const[index2,0] / tempangle2 ) elseif ( trapfunc[index2] == 42 ) ; arcsecant result[index2] = acos( const[index2,0] / tempangle2 ) elseif ( trapfunc[index2] == 43 ) ; arccosecant result[index2] = asin( const[index2,0] / tempangle2 ) else ; ( trapfunc[index2] == 44 ) ; tan(a)/a result[index2] = tan( const[index2,0]*tempangle2 ) /tempangle2 endif ; trapfunc[index2]<45 elseif trapfunc[index2] < 67 if ( trapfunc[index2] == 45 ) ; cotan(a)/a result[index2] = cotan( const[index2,0]*tempangle2 ) /tempangle2 elseif ( trapfunc[index2] == 46 ) ; secant(a)/a result[index2] = 1 / ( tempangle2 * cos( const[index2,0]*tempangle2 )) elseif ( trapfunc[index2] == 47 ) ; cosecant(a)/a result[index2] = 1 / ( tempangle2 * sin( const[index2,0]*tempangle2 )) elseif ( trapfunc[index2] == 48 ) ; a*sin(a) result[index2] = tempangle2 * sin( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 49 ) ; a*cos(a) result[index2] = tempangle2 * cos( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 50 ) ; a*tan(a) result[index2] = tempangle2 * tan( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 51 ) ; a*cotan(a) result[index2] = tempangle2 * cotan( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 52 ) ; a*secant(a) result[index2] = tempangle2/cos( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 53 ) ; a*cosecant(a) result[index2] = tempangle2/sin( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 54 ) ; sin(recip a) result[index2] = sin( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 55 ) ; cos(recip a) result[index2] = cos( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 56 ) ; tan(recip a) result[index2] = tan( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 57 ) ; cotan(recip a) result[index2] = cotan( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 58 ) ; sec(recip a) result[index2] = 1/cos( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 59 ) ; cosec(recip a) result[index2] = 1/sin( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 60 ) ; hyp cotan(a) result[index2] = cotanh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 61 ) ; hyp sec result[index2] = 1/cosh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 62 ) ; hyp csc result[index2] = 1/sinh( const[index2,0]*tempangle2 ) elseif ( trapfunc[index2] == 63 ) ; hyp arccot result[index2] = atanh( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 64 ) ; hyp arcsec result[index2] = acosh( const[index2,0]/tempangle2 ) elseif ( trapfunc[index2] == 65 ) ; hyp arccosec result[index2] = asinh( const[index2,0]/tempangle2 ) else ; trapfunc[index2] == 66 ; a^n result[index2] = tempangle2^const[index2,0] endif ; trapfunc[index2]<67 elseif trapfunc[index2] < 90 if trapfunc[index2] == 67 ; sinh ^ power result[index2] = sinh(const[index2,0]*tempangle2) ^ const[index2,1] elseif trapfunc[index2] == 68 ; cosh ^ power result[index2] = cosh( const[index2,0]*tempangle2 ) ^ const[index2,1] elseif trapfunc[index2] == 69 ; tanh ^ power result[index2] = tanh(const[index2,0]*tempangle2) ^ const[index2,1] elseif trapfunc[index2] == 70 ; cotanh ^ power result[index2] = cotanh( const[index2,0]*tempangle2 ) ^ const[index2,1] elseif trapfunc[index2] == 71 ; sech ^ power result[index2] = (1/cosh(const[index2,0]*tempangle2)) ^ const[index2,1] elseif trapfunc[index2] == 72 ; csch ^ power result[index2] = (1 / sinh( const[index2,0]*tempangle2 )) ^ const[index2,1] elseif trapfunc[index2] == 73 ; sinh (recip a) result[index2] = sinh(const[index2,0]/tempangle2) elseif trapfunc[index2] == 74 ; cosh(1/a) result[index2] = cosh(const[index2,0]/tempangle2) elseif trapfunc[index2] == 75 ; tanh(1/a) result[index2] = tanh(const[index2,0]/tempangle2) elseif trapfunc[index2] == 76 ; coth(1/a) result[index2] = cotanh(const[index2,0]/tempangle2) elseif trapfunc[index2] == 77 ; sech(1/a) result[index2] = 1/cosh(const[index2,0]/tempangle2) elseif trapfunc[index2] == 78 ; csch(1/a) result[index2] = 1/sinh(const[index2,0]/tempangle2) elseif trapfunc[index2] == 79 ; sin * tan result[index2] = sin( const[index2,0]*tempangle2 ) * tan(const[index2,1]*tempangle2) elseif trapfunc[index2] == 80 ; sinh * tanh result[index2] = sinh(const[index2,0]*tempangle2) * tanh(const[index2,1]*tempangle2) elseif trapfunc[index2] == 81 ; sinh * cosh result[index2] = sinh(const[index2,0]*tempangle2) * cosh(const[index2,1]*tempangle2) elseif trapfunc[index2] == 82 ; sinh^n * cosh^n ftemp2 = sinh(const[index2,0]*tempangle2), ftemp = cosh(const[index2,1]*tempangle2) result[index2] = (ftemp2*ftemp)^const[index2,2] elseif trapfunc[index2] == 83 ; sin^n * cos^n ftemp2 = sin(const[index2,0]*tempangle2), ftemp = cos(const[index2,1]*tempangle2) result[index2] = (ftemp2*ftemp)^const[index2,2] elseif trapfunc[index2] == 84 ; sin(1/a) * cos(1/a) ftemp = 1/tempangle2 result[index2] = sin(const[index2,0]*ftemp)*cos(const[index2,1]*ftemp) elseif trapfunc[index2] == 85 ; sin(1/a) ^ power result[index2] = sin( const[index2,0]/tempangle2 ) ^ const[index2,1] elseif trapfunc[index2] == 86 ; sin(a) * cos(1/a) result[index2] = sin(const[index2,0]*tempangle2) * cos(const[index2,1]/tempangle2) elseif trapfunc[index2] == 87 ; sin(a) * sin(1/a) result[index2] = sin(const[index2,0]*tempangle2) * sin(const[index2,1]/tempangle2) elseif trapfunc[index2] == 88 ; log ^ power result[index2] = log(const[index2,0]*tempangle2) ^ const[index2,1] else ; trapfunc[index2] == 89 ; sine * sine result[index2] = sin(const[index2,0]*tempangle2) * sin(const[index2,1]*tempangle2) endif ; trapfunc[index2]<90 elseif trapfunc[index2] < 112 if trapfunc[index2] == 90 ; sinh(recip a)*cosh(recip a) ftemp = 1/tempangle2 result[index2] = sinh(const[index2,0]*ftemp)*cosh(const[index2,1]*ftemp) elseif trapfunc[index2] == 91 ; sinh(recip a) ^ power result[index2] = sinh( const[index2,0]/tempangle2 ) ^ const[index2,1] elseif trapfunc[index2] == 92 ; sinh(a) * cosh( recip a) result[index2] = sinh(const[index2,0]*tempangle2) * cosh(const[index2,1]/tempangle2) elseif trapfunc[index2] == 93 ; sinh(a) * sinh(recip a) result[index2] = sinh(const[index2,0]*tempangle2) * sinh(const[index2,1]/tempangle2) elseif trapfunc[index2] == 94 ; sin * sinh result[index2] = sin(const[index2,0]*tempangle2) * sinh(const[index2,1]*tempangle2) elseif trapfunc[index2] == 95 ; sin * cosh result[index2] = sin(const[index2,0]*tempangle2) * cosh(const[index2,1]*tempangle2) elseif trapfunc[index2] == 96 ; sin^n * sinh^n ftemp2 = sin(const[index2,0]*tempangle2), ftemp = sinh(const[index2,1]*tempangle2) result[index2] = (ftemp2*ftemp)^const[index2,2] elseif trapfunc[index2] == 97 ; sin * exp result[index2] = sin(const[index2,0]*tempangle2)*exp(const[index2,1]*tempangle2) elseif trapfunc[index2] == 98 ; cos * exp result[index2] = cos(const[index2,0]*tempangle2)*exp(const[index2,1]*tempangle2) elseif trapfunc[index2] == 99 ; sinh * exp result[index2] = sinh(const[index2,0]*tempangle2)*exp(const[index2,1]*tempangle2) elseif trapfunc[index2] == 100 ; cosh * exp result[index2] = cosh(const[index2,0]*tempangle2)*exp(const[index2,1]*tempangle2) elseif trapfunc[index2] == 101 ; sin * log result[index2] = sin(const[index2,0]*tempangle2)*log(const[index2,1]*tempangle2) elseif trapfunc[index2] == 102 ; cos * log result[index2] = cos(const[index2,0]*tempangle2)*log(const[index2,1]*tempangle2) elseif trapfunc[index2] == 103 ; sinh * log result[index2] = sinh(const[index2,0]*tempangle2)*log(const[index2,1]*tempangle2) elseif trapfunc[index2] == 104 ; cosh * log result[index2] = cosh(const[index2,0]*tempangle2)*log(const[index2,1]*tempangle2) elseif trapfunc[index2] == 105 ; e^(a^power) result[index2] = exp(const[index2,0]*(tempangle2^const[index2,1])) elseif trapfunc[index2] == 106 ; e^(1/(a^power)) result[index2] = exp(const[index2,0]/(tempangle2^(const[index2,1]))) elseif trapfunc[index2] == 107 ; absolute value result[index2] = abs(tempangle2) elseif trapfunc[index2] == 108 ; rounding result[index2] = round(const[index2,0]*tempangle2) elseif trapfunc[index2] == 109 ; truncation result[index2] = trunc(const[index2,0]*tempangle2) elseif trapfunc[index2] == 110 ; ceiling result[index2] = ceil(const[index2,0]*tempangle2) else ; trapfunc[index2] == 111 ; floor result[index2] = floor(const[index2,0]*tempangle2) endif ; trapfunc[index2]<112 elseif trapfunc[index2] < 135 if trapfunc[index2] == 112 ; bifolium ftemp = cos(const[index2,1]*tempangle2) result[index2] = sin(const[index2,0]*tempangle2)*ftemp*ftemp elseif trapfunc[index2] == 113 ; cardioid result[index2] = cos(const[index2,0]*tempangle2) + const[index2,1] elseif trapfunc[index2] == 114 ; circle result[index2] = const[index2,0] elseif trapfunc[index2] == 115 ; cissoid of Diocles result[index2] = sin(const[index2,0]*tempangle2)*tan(const[index2,1]*tempangle2) elseif trapfunc[index2] == 116 ; cochleoid result[index2] = sin(const[index2,0]*tempangle2)/tempangle2 elseif trapfunc[index2] == 117 ; companion to the cycloid (x-coordinate) result[index2] = const[index2,0]*tempangle2 elseif trapfunc[index2] == 118 ; companion to the cycloid (y-coordinate) result[index2] = const[index2,1]-cos(const[index2,0]*tempangle2) elseif trapfunc[index2] == 119 ; conchoid of Nicomedes result[index2] = 1/sin(const[index2,0]*tempangle2) + const[index2,1] elseif trapfunc[index2] == 120 ; cycloid 1 (x-coord) result[index2] = const[index2,1]*tempangle2 - sin(const[index2,0]*tempangle2) elseif trapfunc[index2] == 121 ; cycloid 1 (y-coord) result[index2] = const[index2,1] - cos(const[index2,0]*tempangle2) elseif trapfunc[index2] == 122 ; cycloid 2 (x-coord) result[index2] = const[index2,1]*tempangle2 + sin(const[index2,0]*tempangle2) elseif trapfunc[index2] == 123 ; cycloid 2 (y-coord) result[index2] = const[index2,1] - cos(const[index2,0]*tempangle2) elseif trapfunc[index2] == 124 ; curtate cycloid (x-coord) result[index2] = const[index2,1]*tempangle2 - const[index2,2]*sin(const[index2,0]*tempangle2) elseif trapfunc[index2] == 125 ; curtate cycloid (y-coord) result[index2] = const[index2,1] - const[index2,2]*cos(const[index2,0]*tempangle2) elseif trapfunc[index2] == 126 ; ellipse (x-coord) result[index2] = const[index2,1]*cos(const[index2,0]*tempangle2) elseif trapfunc[index2] == 127 ; ellipse (y-coord) result[index2] = const[index2,1]*sin(const[index2,0]*tempangle2) elseif trapfunc[index2] == 128 ; epicycloid (x-coord) ftemp = const[index2,0]+const[index2,1] ftemp2 = ftemp/const[index2,1] result[index2] = ftemp*cos(const[index2,2]*tempangle2) - const[index2,1]*cos(ftemp2*tempangle2) elseif trapfunc[index2] == 129 ; epicycloid (y-coord) ftemp = const[index2,0]+const[index2,1] ftemp2 = ftemp/const[index2,1] result[index2] = ftemp*sin(const[index2,2]*tempangle2) - const[index2,1]*sin(ftemp2*tempangle2) elseif trapfunc[index2] == 130 ; evolute of ellipse (x-coord) ftemp = cos(const[index2,0]*tempangle2) result[index2] = ftemp*ftemp*ftemp elseif trapfunc[index2] == 131 ; evolute of ellipse (y-coord) ftemp = sin(const[index2,0]*tempangle2) result[index2] = ftemp*ftemp*ftemp elseif trapfunc[index2] == 132 ; folium of Descartes ftemp = sin(const[index2,0]*tempangle2) ftemp2 = cos(const[index2,1]*tempangle2) result[index2] = sin(const[index2,2]*tempangle2)*cos(tempangle2)/(ftemp*ftemp*ftemp+ftemp2*ftemp2*ftemp2) elseif trapfunc[index2] == 133 ; hyperbola (x-coord) result[index2] = const[index2,1]/cos(const[index2,0]*tempangle2) else ; trapfunc[index2] == 134 ; hyperbola (y-coord) result[index2] = const[index2,1]*tan(const[index2,0]*tempangle2) endif ; trapfunc[index2]<135 elseif trapfunc[index2] < 157 if trapfunc[index2] == 135 ; involute of circle (x-coord) result[index2] = const[index2,2]*cos(const[index2,0]*tempangle2) + tempangle2*sin(const[index2,1]*tempangle2) elseif trapfunc[index2] == 136 ; involute of circle (y-coord) result[index2] = const[index2,2]*sin(const[index2,0]*tempangle2) - tempangle2*cos(const[index2,1]*tempangle2) elseif trapfunc[index2] == 137 ; lemniscate of Bernoulli result[index2] = sqrt(cos(2*const[index2,0]*tempangle2)) elseif trapfunc[index2] == 138 ; limacon of Pascal result[index2] = const[index2,1] + const[index2,2]*cos(const[index2,0]*tempangle2) elseif trapfunc[index2] == 139 ; lituus result[index2] = 1/sqrt(const[index2,0]*tempangle2) elseif trapfunc[index2] == 140 ; nephroid (x-coord) result[index2] = 3*const[index2,2]*cos(const[index2,0]*tempangle2) - cos(3*const[index2,1]*tempangle2) elseif trapfunc[index2] == 141 ; nephroid (y-coord) result[index2] = 3*const[index2,2]*sin(const[index2,0]*tempangle2) - sin(3*const[index2,1]*tempangle2) elseif trapfunc[index2] == 142 ; parabola result[index2] = 1/(const[index2,1] - const[index2,2]*cos(const[index2,0]*tempangle2)) elseif trapfunc[index2] == 143 ; rose result[index2] = sin(const[index2,0]*tempangle2) elseif trapfunc[index2] == 144 ; semicubical parabola ftemp = tan(const[index2,0]*tempangle2) result[index2] = ftemp*ftemp/cos(const[index2,1]*tempangle2) elseif trapfunc[index2] == 145 ; serpentine (x-coord) result[index2] = cotan(const[index2,0]*tempangle2) elseif trapfunc[index2] == 146 ; serpentine (y-coord) result[index2] = const[index2,2]*sin(const[index2,0]*tempangle2)*cos(const[index2,1]*tempangle2) elseif trapfunc[index2] == 147 ; spiral of Archimedes result[index2] = const[index2,0]*tempangle2 elseif trapfunc[index2] == 148 ; hyperbolic spiral result[index2] = const[index2,0]/tempangle2 elseif trapfunc[index2] == 149 ; logarithmic spiral result[index2] = exp(const[index2,0]*tempangle2) elseif trapfunc[index2] == 150 ; parabolic spiral result[index2] = sqrt(const[index2,0]*const[index2,1]*tempangle2) + const[index2,0] elseif trapfunc[index2] == 151 ; strophoid result[index2] = cos(2*const[index2,0]*tempangle2)/cos(const[index2,1]*tempangle2) elseif trapfunc[index2] == 152 ; tractrix (x-coord) result[index2] = const[index2,1]*tempangle2 - const[index2,0]*tanh(tempangle2/const[index2,0]) elseif trapfunc[index2] == 153 ; tractrix (y-coord) result[index2] = const[index2,0]/cosh(tempangle2/const[index2,0]) elseif trapfunc[index2] == 154 ; witch of Agnesi (x-coord) result[index2] = cotan(const[index2,0]*tempangle2) elseif trapfunc[index2] == 155 ; witch of Agnesi (y-coord) ftemp = sin(const[index2,0]*tempangle2) result[index2] = const[index2,1]*ftemp*ftemp else ; trapfunc[index2] == 156 ; cubical parabola ftemp = 1/cos(const[index2,0]*tempangle2) result[index2] = sqrt(ftemp*ftemp*tan(const[index2,1]*tempangle2)) endif ; trapfunc[index2]<157 else ; trapfunc[index2] <= 178 if trapfunc[index2] == 157 ; lissajous (x-coord) result[index2] = sin(const[index2,0]*tempangle2 + const[index2,1]) elseif trapfunc[index2] == 158 ; lissajous (y-coord) result[index2] = cos(const[index2,0]*tempangle2 + const[index2,1]) elseif trapfunc[index2] == 159 ; hypocycloid (x-coord) ftemp = const[index2,0]-const[index2,1] ftemp2 = const[index2,0]/const[index2,1] - const[index2,2] result[index2] = ftemp*cos(tempangle2) + const[index2,1]*cos(ftemp2*tempangle2) elseif trapfunc[index2] == 160 ; hypocycloid (y-coord) ftemp = const[index2,0]-const[index2,1] ftemp2 = const[index2,0]/const[index2,1] - const[index2,2] result[index2] = ftemp*sin(tempangle2) - const[index2,1]*sin(ftemp2*tempangle2) elseif trapfunc[index2] == 161 ; circle 2 result[index2] = const[index2,1]*cos(const[index2,0]*tempangle2) elseif trapfunc[index2] == 162 ; conchoid 2 result[index2] = const[index2,2] + const[index2,1]/cos(const[index2,0]*tempangle2) elseif trapfunc[index2] == 163 ; conchoid of De Sluze result[index2] = cos(const[index2,0]*tempangle2)/const[index2,2] + const[index2,2]/cos(const[index2,1]*tempangle2) elseif trapfunc[index2] == 164 ; ellipse 2 ftemp = abs(tan(tempangle2)) result[index2] = const[index2,0]*const[index2,1]*sqrt(1+ftemp*ftemp)/(const[index2,1]^const[index2,2] + \ (const[index2,0]^const[index2,2] * ftemp^const[index2,2]))^(1/const[index2,2]) elseif trapfunc[index2] == 165 ; folium of Descartes 2 (x-coord) result[index2] = 3*const[index2,0]*tempangle2/(const[index2,1]+const[index2,2]*tempangle2*tempangle2*tempangle2) elseif trapfunc[index2] == 166 ; folium of Descartes 2 (y-coord) result[index2] = 3*const[index2,0]*tempangle2*tempangle2/(const[index2,1]+const[index2,2]* \ tempangle2*tempangle2*tempangle2) elseif trapfunc[index2] == 167 ; kampyle of Eudoxus ftemp = cos(const[index2,0]*tempangle2) result[index2] = const[index2,1]/ftemp*ftemp elseif trapfunc[index2] == 168 ; kappa curve result[index2] = cotan(const[index2,0]*tempangle2) elseif trapfunc[index2] == 169 ; wavy circle (x) ftemp = const[index2,2] + 0.1 * const[index2,1]*sin(20*const[index2,0]*tempangle2) result[index2] = ftemp * cos(tempangle2) elseif trapfunc[index2] == 170 ; wavy circle (y) ftemp = const[index2,2] + 0.1 * const[index2,1]*sin(20*const[index2,0]*tempangle2) result[index2] = ftemp * sin(tempangle2) elseif trapfunc[index2] == 171 ; a/log(a) result[index2] = tempangle2/log(const[index2,0]*tempangle2) elseif trapfunc[index2] == 172 ; log(a)/a result[index2] = log(const[index2,0]*tempangle2)/tempangle2 elseif trapfunc[index2] == 173 ; e^a / a result[index2] = exp(const[index2,0]*tempangle2)/tempangle2 elseif trapfunc[index2] == 174 ; e^(1/a) / a result[index2] = exp(const[index2,0]/tempangle2)/tempangle2 elseif trapfunc[index2] == 175 ; e^(a^n) / a result[index2] = exp(const[index2,0]*(tempangle2^const[index2,1]))/tempangle2 elseif trapfunc[index2] == 176 ; e^(1/(a^n)) / a result[index2] = exp(const[index2,0]/(tempangle2^const[index2,1]))/tempangle2 elseif trapfunc[index2] == 177 ; a*e^(a^n) result[index2] = tempangle2 * exp(const[index2,0]*(tempangle2^const[index2,1])) else ; trapfunc[index2] == 178 ; a*e^(1/(a^n)) result[index2] = tempangle2 * exp(const[index2,0]/(tempangle2^const[index2,1])) endif ; trapfunc[index2]<=178 endif ; trapfunc[index2] if absoluteresult[index2] result[index2] = abs(result[index2]) endif ; absoluteresult[] ; Perform any appropriate scaling (including overall)and offsetting result[index2] = scale*(coeff[index2,0,0] * result[index2] + offset[index2]) index = index + 1 index2 = index2 + 1 endwhile ; index index = 0 ; reset index for oscillator loop, but not index2 ; Find trap oscillator values while index < numberofoscsets if absoluteangle[index2] tempangle2 = abs(tempangle) else tempangle2 = tempangle endif ; absoluteangle[] ; Calculate the first oscillator of each set if oscselector[index2,0] result[index2] = coeff[index2,0,0]*sin(coeff[index2,0,1]*tempangle2) else result[index2] = coeff[index2,0,0]*cos(coeff[index2,0,1]*tempangle2) endif ; oscselector ; Now add any other oscillators of that set that have a non-zero amplitude index3 = 1 while index3 < 4 if coeff[index2, index3, 0] != 0.0 if oscselector[index2,index3] result[index2] = result[index2] + coeff[index2,index3,0]*sin(coeff[index2,index3,1]*tempangle2) else result[index2] = result[index2] + coeff[index2,index3,0]*cos(coeff[index2,index3,1]*tempangle2) endif ; oscselector else index3 = 4 ; stop computing oscillators if we find one in a set that is set to zero endif ; coeff[] index3 = index3 + 1 endwhile ; index3 if absoluteresult[index2] result[index2] = abs(result[index2]) endif ; absoluteresult[] ; Perform offset and overall scaling result[index2] = scale*(result[index2] + offset[index2]) index = index + 1 index2 = index2 + 1 endwhile ; index ; Use result to calculate the trap point(s) that was(were) identified if @coordtype == "Polar" traptemp = result[0] * exp(flip(tempangle)) if twotraps traptemp2 = result[1] * exp(flip(tempangle)) endif ; twotraps elseif @coordtype == "Parametric" traptemp = result[0] + flip(result[1]) if twotraps traptemp2 = result[2] + flip(result[3]) endif ; twotraps else ; @coordtype == "Mixed" if @traptype == "mixed 2" traptemp = result[0] + flip(result[1]) traptemp2 = result[2] * exp(flip(tempangle)) else traptemp = result[0] * exp(flip(tempangle)) traptemp2 = result[1] + flip(result[2]) endif ; @traptype endif ; @coordtype ; If more than one trap was employed, combine the points appropriately, as specified if twotraps if @twotrapsblend traptemp = @trap1weight*traptemp traptemp2 = @trap2weight*traptemp2 endif ; @trapblend if @trapcombo == "average" tempc = 0.5 * (traptemp + traptemp2) elseif @trapcombo == "sum" tempc = traptemp + traptemp2 elseif @trapcombo == "difference" tempc = traptemp - traptemp2 elseif @trapcombo == "product" tempc = traptemp * traptemp2 elseif @trapcombo == "geom. mean" tempc = sqrt(traptemp * traptemp2) elseif @trapcombo == "difference 2" tempc = traptemp2 - traptemp elseif @trapcombo == "quotient" tempc = traptemp / traptemp2 elseif @trapcombo == "quotient 2" tempc = traptemp2 / traptemp elseif @trapcombo == "exponential 1" tempc = traptemp ^ traptemp2 elseif @trapcombo == "exponential 2" tempc = traptemp2 ^ traptemp elseif @trapcombo == "splice 1" tempc = real(traptemp) + flip(imag(traptemp2)) elseif @trapcombo == "splice 2" tempc = real(traptemp2) + flip(imag(traptemp)) elseif @trapcombo == "product 2" tempc = real(traptemp)*real(traptemp2) + flip(imag(traptemp)*imag(traptemp2)) elseif @trapcombo == "quotient 3" tempc = real(traptemp)/real(traptemp2) + flip(imag(traptemp)/imag(traptemp2)) elseif @trapcombo == "splice 3" tempc = real(traptemp)*imag(traptemp) + flip(real(traptemp2)*imag(traptemp2)) elseif @trapcombo == "splice 4" tempc = real(traptemp)*imag(traptemp2) + flip(real(traptemp2)*imag(traptemp)) elseif @trapcombo == "splice 5" tempc = real(traptemp2)*imag(traptemp2) + flip(real(traptemp)*imag(traptemp)) elseif @trapcombo == "splice 6" tempc = real(traptemp2)*imag(traptemp) + flip(real(traptemp)*imag(traptemp2)) endif ; @trapcombo else tempc = traptemp endif ; twotraps if @absolutet tempc = abs(tempc) endif ; @absolutet if @absoluter6 tempc = abs(real(tempc)) + flip(imag(tempc)) endif ; @absoluter6 if @absolutei6 tempc = real(tempc) + flip(abs(imag(tempc))) endif ; @absolutei6 ; Temporarily save untransmuted trap value for possible perturbation traptemp = tempc ; Now transmute the trapped point of the trapping curve if desired tempc = @tiscale * tempc if @transmogrify != 0 if ( @transmogrify == 1 ) tempc = 1/tempc elseif ( @transmogrify == 2 ) tempc = tempc * tempc elseif ( @transmogrify == 3 ) tempc = 1 / ( tempc * tempc ) elseif ( @transmogrify == 4 ) tempc = log(tempc) elseif ( @transmogrify == 5 ) tempc = exp( tempc) elseif ( @transmogrify == 6 ) tempc = tempc^tempc elseif ( @transmogrify == 7 ) tempc = sin( tempc ) elseif ( @transmogrify == 8 ) tempc = cos( tempc ) elseif ( @transmogrify == 9 ) tempc = tan( tempc ) elseif ( @transmogrify == 10 ) tempc = asin( tempc ) elseif ( @transmogrify == 11 ) tempc = acos( tempc ) elseif ( @transmogrify == 12 ) tempc = atan( tempc ) elseif ( @transmogrify == 13 ) tempc = sinh( tempc ) elseif ( @transmogrify == 14 ) tempc = cosh( tempc ) elseif ( @transmogrify == 15 ) tempc = tanh( tempc ) elseif ( @transmogrify == 16 ) tempc = asinh( tempc ) elseif ( @transmogrify == 17 ) tempc = acosh( tempc ) elseif ( @transmogrify == 18 ) tempc = atanh( tempc ) elseif ( @transmogrify == 19 ) tempc = log( 1/tempc ) elseif ( @transmogrify == 20 ) tempc = log( log( tempc )) elseif ( @transmogrify == 21 ) tempc = exp( -tempc ) elseif ( @transmogrify == 22 ) tempc = exp( 1/tempc ) elseif ( @transmogrify == 23 ) tempc = tempc^(-tempc) elseif ( @transmogrify == 24 ) tempc = sin( tempc ) tempc = tempc * tempc elseif ( @transmogrify == 25 ) tempc = cos( tempc ) tempc = tempc * tempc elseif ( @transmogrify == 26 ) tempc = tan( tempc ) tempc = tempc * tempc elseif ( @transmogrify == 27 ) tempc = cotan( tempc ) elseif ( @transmogrify == 28 ) tempc = 1/cos( tempc ) elseif ( @transmogrify == 29 ) tempc = 1/sin( tempc ) elseif ( @transmogrify == 30 ) tempc = cotan( tempc ) tempc = tempc * tempc elseif ( @transmogrify == 31 ) tempc = 1/cos( tempc ) tempc = tempc * tempc elseif ( @transmogrify == 32 ) tempc = 1/sin( tempc ) tempc = tempc * tempc elseif ( @transmogrify == 33 ) tempc = tempc^(tempc) tempc = tempc^tempc elseif ( @transmogrify == 34 ) tempc = tempc^(tempc) tempc = 1/( tempc^tempc ) elseif ( @transmogrify == 35 ) tempc = log(-tempc) elseif ( @transmogrify == 36 ) tempc = 1/log( tempc ) elseif ( @transmogrify == 37 ) tempc = tempc * log( tempc ) elseif ( @transmogrify == 38 ) tempc = sin( tempc ) / tempc elseif ( @transmogrify == 39 ) tempc = cos( tempc ) / tempc elseif ( @transmogrify == 40 ) tempc = sin( tempc ) * cos( tempc ) elseif ( @transmogrify == 41 ) tempc = sin( tempc^2 ) elseif ( @transmogrify == 42 ) tempc = exp( -1/tempc ) elseif ( @transmogrify == 43 ) tempc = tempc * exp( tempc ) elseif ( @transmogrify == 44 ) tempc = tempc * exp( -tempc ) elseif ( @transmogrify == 45 ) tempc = tempc * exp( 1/tempc ) elseif ( @transmogrify == 46 ) tempc = tempc * exp( -1/tempc ) elseif ( @transmogrify == 47 ) tempc = tempc * tempc * tempc elseif ( @transmogrify == 48 ) tempc = 1 / ( tempc * tempc * tempc ) elseif ( @transmogrify == 49 ) tempc = atan( 1 / tempc ) elseif ( @transmogrify == 50 ) tempc = acos( 1 / tempc ) elseif ( @transmogrify == 51 ) tempc = asin( 1 / tempc ) elseif ( @transmogrify == 52 ) tempc = tan( tempc ) / tempc elseif ( @transmogrify == 53 ) tempc = cotan( tempc ) / tempc elseif ( @transmogrify == 54 ) tempc = 1 / ( tempc * cos( tempc )) elseif ( @transmogrify == 55 ) tempc = 1 / ( tempc * sin( tempc )) elseif ( @transmogrify == 56 ) tempc = tempc * sin( tempc ) elseif ( @transmogrify == 57 ) tempc = tempc * cos( tempc ) elseif ( @transmogrify == 58 ) tempc = tempc * tan( tempc ) elseif ( @transmogrify == 59 ) tempc = tempc * cotan( tempc ) elseif ( @transmogrify == 60 ) tempc = tempc/cos( tempc ) elseif ( @transmogrify == 61 ) tempc = tempc/sin( tempc ) elseif ( @transmogrify == 62 ) tempc = sin( 1/tempc ) elseif ( @transmogrify == 63 ) tempc = cos( 1/tempc ) elseif ( @transmogrify == 64 ) tempc = tan( 1/tempc ) elseif ( @transmogrify == 65 ) tempc = cotan( 1/tempc ) elseif ( @transmogrify == 66 ) tempc = 1/cos( 1/tempc ) elseif ( @transmogrify == 67 ) tempc = 1/sin( 1/tempc ) elseif ( @transmogrify == 68 ) tempc = cotanh( tempc ) elseif ( @transmogrify == 69 ) tempc = 1/cosh( tempc ) elseif ( @transmogrify == 70 ) tempc = 1/sinh( tempc ) elseif ( @transmogrify == 71 ) tempc = atanh( 1/tempc ) elseif ( @transmogrify == 72 ) tempc = acosh( 1/tempc ) elseif ( @transmogrify == 73 ) tempc = asinh( 1/tempc ) elseif @transmogrify == 74 tempc = tempc^@tpower elseif @transmogrify == 75 tempc = sinh(tempc) tempc = tempc * tempc elseif @transmogrify == 76 tempc = cosh( tempc ) tempc = tempc * tempc elseif @transmogrify == 77 tempc = tanh(tempc) tempc = tempc * tempc elseif @transmogrify == 78 tempc = cotanh( tempc ) tempc = tempc * tempc elseif @transmogrify == 79 tempc = 1/cosh(tempc) tempc = tempc * tempc elseif @transmogrify == 80 tempc = 1 / sinh( tempc ) tempc = tempc * tempc elseif @transmogrify == 81 tempc = sinh(1/tempc) elseif @transmogrify == 82 tempc = cosh(1/tempc) elseif @transmogrify == 83 tempc = tanh(1/tempc) elseif @transmogrify == 84 tempc = cotanh(1/tempc) elseif @transmogrify == 85 tempc = 1/cosh(1/tempc) elseif @transmogrify == 86 tempc = 1/sinh(1/tempc) elseif @transmogrify == 87 tempc = sin( tempc ) * tan(tempc) elseif @transmogrify == 88 tempc = sinh(tempc) * tanh(tempc) elseif @transmogrify == 89 tempc = sinh(tempc) * cosh(tempc) elseif @transmogrify == 90 ztemp = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*ztemp*ztemp elseif @transmogrify == 91 ztemp = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*ztemp*ztemp elseif @transmogrify == 92 tempc = 1/tempc tempc = sin(tempc)*cos(tempc) elseif @transmogrify == 93 tempc = sin( 1/tempc ) tempc = tempc*tempc elseif @transmogrify == 94 tempc = sin(tempc) * cos(1/tempc) elseif @transmogrify == 95 tempc = sin(tempc) * sin(1/tempc) elseif @transmogrify == 96 tempc = log(tempc) tempc = tempc*tempc elseif @transmogrify == 97 tempc = sin(tempc) * sin(2*tempc) elseif @transmogrify == 98 tempc = exp(2*tempc) elseif @transmogrify == 99 tempc = exp(-2*tempc) elseif @transmogrify == 100 tempc = 1/tempc tempc = sinh(tempc)*cosh(tempc) elseif @transmogrify == 101 tempc = sinh( 1/tempc ) tempc = tempc*tempc elseif @transmogrify == 102 tempc = sinh(tempc) * cosh(1/tempc) elseif @transmogrify == 103 tempc = sinh(tempc) * sinh(1/tempc) elseif @transmogrify == 104 tempc = sin(tempc) * sinh(tempc) elseif @transmogrify == 105 tempc = sin(tempc) * cosh(tempc) elseif @transmogrify == 106 ztemp = sinh(tempc) tempc = sin(tempc) tempc = tempc*tempc*ztemp*ztemp elseif @transmogrify == 107 tempc = sin(tempc)*exp(tempc) elseif @transmogrify == 108 tempc = cos(tempc)*exp(tempc) elseif @transmogrify == 109 tempc = sinh(tempc)*exp(tempc) elseif @transmogrify == 110 tempc = cosh(tempc)*exp(tempc) elseif @transmogrify == 111 tempc = sin(tempc)*log(tempc) elseif @transmogrify == 112 tempc = cos(tempc)*log(tempc) elseif @transmogrify == 113 tempc = sinh(tempc)*log(tempc) elseif @transmogrify == 114 tempc = cosh(tempc)*log(tempc) elseif @transmogrify == 115 tempc = exp(tempc^2) elseif @transmogrify == 116 tempc = exp(1/(tempc^2)) elseif @transmogrify == 117 tempc = abs(tempc) elseif @transmogrify == 118 tempc = round(tempc) elseif @transmogrify == 119 tempc = trunc(tempc) elseif @transmogrify == 120 tempc = ceil(tempc) elseif @transmogrify == 121 tempc = floor(tempc) elseif @transmogrify == 122 tempc = tempc/log(tempc) elseif @transmogrify == 123 tempc = log(tempc)/tempc elseif @transmogrify == 124 tempc = exp(tempc)/tempc elseif @transmogrify == 125 tempc = exp(1/tempc)/tempc elseif @transmogrify == 126 tempc = exp(tempc^2)/tempc elseif @transmogrify == 127 tempc = exp(1/(tempc^2))/tempc elseif @transmogrify == 128 tempc = tempc * exp(tempc^2) elseif @transmogrify == 129 tempc = tempc * exp(1/(tempc^2)) elseif @transmogrify == 130 tempc = exp(-(tempc^2)) elseif @transmogrify == 131 tempc = exp(-1/(tempc^2)) elseif @transmogrify == 132 tempc = exp(-(tempc^2))/tempc elseif @transmogrify == 133 tempc = exp(-1/(tempc^2))/tempc elseif @transmogrify == 134 tempc = tempc * exp(-(tempc^2)) else ; @transmogrify == 135 tempc = tempc * exp(-1/(tempc^2)) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * traptemp endif ; @trapperturb ; initialize back end real, back end imag, if desired ftemp = @rbscale * real(tempc) if ( @realback == 0 ) tempx = ftemp elseif ( @realback == 1 ) tempx = 1/ftemp elseif ( @realback == 2 ) tempx = ftemp * ftemp elseif ( @realback == 3 ) tempx = 1 / ( ftemp * ftemp ) elseif ( @realback == 4 ) tempx = log(ftemp) elseif ( @realback == 5 ) tempx = exp( ftemp) elseif ( @realback == 6 ) tempx = ftemp^ftemp elseif ( @realback == 7 ) tempx = sin( ftemp ) elseif ( @realback == 8 ) tempx = cos( ftemp ) elseif ( @realback == 9 ) tempx = tan( ftemp ) elseif ( @realback == 10 ) tempx = asin( ftemp ) elseif ( @realback == 11 ) tempx = acos( ftemp ) elseif ( @realback == 12 ) tempx = atan( ftemp ) elseif ( @realback == 13 ) tempx = sinh( ftemp ) elseif ( @realback == 14 ) tempx = cosh( ftemp ) elseif ( @realback == 15 ) tempx = tanh( ftemp ) elseif ( @realback == 16 ) tempx = asinh( ftemp ) elseif ( @realback == 17 ) tempx = acosh( ftemp ) elseif ( @realback == 18 ) tempx = atanh( ftemp ) elseif ( @realback == 19 ) tempx = log( 1/ftemp ) elseif ( @realback == 20 ) tempx = log( log( ftemp )) elseif ( @realback == 21 ) tempx = exp( -ftemp ) elseif ( @realback == 22 ) tempx = exp( 1/ftemp ) elseif ( @realback == 23 ) tempx = ftemp^(-ftemp) elseif ( @realback == 24 ) tempx = sin( ftemp ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( ftemp ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( ftemp ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( ftemp ) elseif ( @realback == 28 ) tempx = 1/cos( ftemp ) elseif ( @realback == 29 ) tempx = 1/sin( ftemp ) elseif ( @realback == 30 ) tempx = cotan( ftemp ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( ftemp ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( ftemp ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = ftemp^(ftemp) tempx = ftemp^tempx elseif ( @realback == 34 ) tempx = ftemp^(ftemp) tempx = 1/( ftemp^tempx ) elseif ( @realback == 35 ) tempx = log(-ftemp) elseif ( @realback == 36 ) tempx = 1/log( ftemp ) elseif ( @realback == 37 ) tempx = ftemp * log( ftemp ) elseif ( @realback == 38 ) tempx = sin( ftemp ) / ftemp elseif ( @realback == 39 ) tempx = cos( ftemp ) / ftemp elseif ( @realback == 40 ) tempx = sin( ftemp ) * cos( ftemp ) elseif ( @realback == 41 ) tempx = sin( ftemp^2 ) elseif ( @realback == 42 ) tempx = exp( -1/ftemp ) elseif ( @realback == 43 ) tempx = ftemp * exp( ftemp ) elseif ( @realback == 44 ) tempx = ftemp * exp( -ftemp ) elseif ( @realback == 45 ) tempx = ftemp * exp( 1/ftemp ) elseif ( @realback == 46 ) tempx = ftemp * exp( -1/ftemp ) elseif ( @realback == 47 ) tempx = ftemp * ftemp * ftemp elseif ( @realback == 48 ) tempx = 1 / ( ftemp * ftemp * ftemp ) elseif ( @realback == 49 ) tempx = atan( 1 / ftemp ) elseif ( @realback == 50 ) tempx = acos( 1 / ftemp ) elseif ( @realback == 51 ) tempx = asin( 1 / ftemp ) elseif ( @realback == 52 ) tempx = tan( ftemp ) / ftemp elseif ( @realback == 53 ) tempx = cotan( ftemp ) / ftemp elseif ( @realback == 54 ) tempx = 1 / ( ftemp * cos( ftemp )) elseif ( @realback == 55 ) tempx = 1 / ( ftemp * sin( ftemp )) elseif ( @realback == 56 ) tempx = ftemp * sin( ftemp ) elseif ( @realback == 57 ) tempx = ftemp * cos( ftemp ) elseif ( @realback == 58 ) tempx = ftemp * tan( ftemp ) elseif ( @realback == 59 ) tempx = ftemp * cotan( ftemp ) elseif ( @realback == 60 ) tempx = ftemp/cos( ftemp ) elseif ( @realback == 61 ) tempx = ftemp/sin( ftemp ) elseif ( @realback == 62 ) tempx = sin( 1/ftemp ) elseif ( @realback == 63 ) tempx = cos( 1/ftemp ) elseif ( @realback == 64 ) tempx = tan( 1/ftemp ) elseif ( @realback == 65 ) tempx = cotan( 1/ftemp ) elseif ( @realback == 66 ) tempx = 1/cos( 1/ftemp ) elseif ( @realback == 67 ) tempx = 1/sin( 1/ftemp ) elseif ( @realback == 68 ) tempx = cotanh( ftemp ) elseif ( @realback == 69 ) tempx = 1/cosh( ftemp ) elseif ( @realback == 70 ) tempx = 1/sinh( ftemp ) elseif ( @realback == 71 ) tempx = atanh( 1/ftemp ) elseif ( @realback == 72 ) tempx = acosh( 1/ftemp ) elseif ( @realback == 73 ) tempx = asinh( 1/ftemp ) elseif @realback == 74 tempx = ftemp^@rbpower elseif @realback == 75 tempx = sinh(ftemp) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( ftemp ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(ftemp) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( ftemp ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(ftemp) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( ftemp ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/ftemp) elseif @realback == 82 tempx = cosh(1/ftemp) elseif @realback == 83 tempx = tanh(1/ftemp) elseif @realback == 84 tempx = cotanh(1/ftemp) elseif @realback == 85 tempx = 1/cosh(1/ftemp) elseif @realback == 86 tempx = 1/sinh(1/ftemp) elseif @realback == 87 tempx = sin( ftemp ) * tan(ftemp) elseif @realback == 88 tempx = sinh(ftemp) * tanh(ftemp) elseif @realback == 89 tempx = sinh(ftemp) * cosh(ftemp) elseif @realback == 90 tempx = sinh(ftemp), ftemp2 = cosh(ftemp) tempx = tempx*tempx*ftemp2*ftemp2 elseif @realback == 91 tempx = sin(ftemp), ftemp2 = cos(ftemp) tempx = tempx*tempx*ftemp2*ftemp2 elseif @realback == 92 tempx = 1/ftemp tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/ftemp ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(ftemp) * cos(1/ftemp) elseif @realback == 95 tempx = sin(ftemp) * sin(1/ftemp) elseif @realback == 96 tempx = log(ftemp) tempx = tempx*tempx elseif @realback == 97 tempx = sin(ftemp) * sin(2*ftemp) elseif @realback == 98 tempx = exp(2*ftemp) elseif @realback == 99 tempx = exp(-2*ftemp) elseif @realback == 100 tempx = 1/ftemp tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/ftemp ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(ftemp) * cosh(1/ftemp) elseif @realback == 103 tempx = sinh(ftemp) * sinh(1/ftemp) elseif @realback == 104 tempx = sin(ftemp) * sinh(ftemp) elseif @realback == 105 tempx = sin(ftemp) * cosh(ftemp) elseif @realback == 106 tempx = sin(ftemp), ftemp2 = sinh(ftemp) tempx = tempx*tempx*ftemp2*ftemp2 elseif @realback == 107 tempx = sin(ftemp)*exp(ftemp) elseif @realback == 108 tempx = cos(ftemp)*exp(ftemp) elseif @realback == 109 tempx = sinh(ftemp)*exp(ftemp) elseif @realback == 110 tempx = cosh(ftemp)*exp(ftemp) elseif @realback == 111 tempx = sin(ftemp)*log(ftemp) elseif @realback == 112 tempx = cos(ftemp)*log(ftemp) elseif @realback == 113 tempx = sinh(ftemp)*log(ftemp) elseif @realback == 114 tempx = cosh(ftemp)*log(ftemp) elseif @realback == 115 tempx = exp(ftemp^2) elseif @realback == 116 tempx = exp(1/(ftemp^2)) elseif @realback == 117 tempx = abs(ftemp) elseif @realback == 118 tempx = round(ftemp) elseif @realback == 119 tempx = trunc(ftemp) elseif @realback == 120 tempx = ceil(ftemp) elseif @realback == 121 tempx = floor(ftemp) elseif @realback == 122 tempx = ftemp/log(ftemp) elseif @realback == 123 tempx = log(ftemp)/ftemp elseif @realback == 124 tempx = exp(ftemp)/ftemp elseif @realback == 125 tempx = exp(1/ftemp)/ftemp elseif @realback == 126 tempx = exp(ftemp^2)/ftemp elseif @realback == 127 tempx = exp(1/(ftemp^2))/ftemp elseif @realback == 128 tempx = ftemp * exp(ftemp^2) elseif @realback == 129 tempx = ftemp * exp(1/(ftemp^2)) elseif @realback == 130 tempx = exp(-(ftemp^2)) elseif @realback == 131 tempx = exp(-1/(ftemp^2)) elseif @realback == 132 tempx = exp(-(ftemp^2))/ftemp elseif @realback == 133 tempx = exp(-1/(ftemp^2))/ftemp elseif @realback == 134 tempx = ftemp * exp(-(ftemp^2)) else ; @realback == 135 tempx = ftemp * exp(-1/(ftemp^2)) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb ftemp = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = ftemp elseif ( @imagback == 1 ) tempy = 1/ftemp elseif ( @imagback == 2 ) tempy = ftemp * ftemp elseif ( @imagback == 3 ) tempy = 1 / ( ftemp * ftemp ) elseif ( @imagback == 4 ) tempy = log(ftemp) elseif ( @imagback == 5 ) tempy = exp( ftemp) elseif ( @imagback == 6 ) tempy = ftemp^ftemp elseif ( @imagback == 7 ) tempy = sin( ftemp ) elseif ( @imagback == 8 ) tempy = cos( ftemp ) elseif ( @imagback == 9 ) tempy = tan( ftemp ) elseif ( @imagback == 10 ) tempy = asin( ftemp ) elseif ( @imagback == 11 ) tempy = acos( ftemp ) elseif ( @imagback == 12 ) tempy = atan( ftemp ) elseif ( @imagback == 13 ) tempy = sinh( ftemp ) elseif ( @imagback == 14 ) tempy = cosh( ftemp ) elseif ( @imagback == 15 ) tempy = tanh( ftemp ) elseif ( @imagback == 16 ) tempy = asinh( ftemp ) elseif ( @imagback == 17 ) tempy = acosh( ftemp ) elseif ( @imagback == 18 ) tempy = atanh( ftemp ) elseif ( @imagback == 19 ) tempy = log( 1/ftemp ) elseif ( @imagback == 20 ) tempy = log( log( ftemp )) elseif ( @imagback == 21 ) tempy = exp( -ftemp ) elseif ( @imagback == 22 ) tempy = exp( 1/ftemp ) elseif ( @imagback == 23 ) tempy = ftemp^(-ftemp) elseif ( @imagback == 24 ) tempy = sin( ftemp ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( ftemp ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( ftemp ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( ftemp ) elseif ( @imagback == 28 ) tempy = 1/cos( ftemp ) elseif ( @imagback == 29 ) tempy = 1/sin( ftemp ) elseif ( @imagback == 30 ) tempy = cotan( ftemp ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( ftemp ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( ftemp ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = ftemp^(ftemp) tempy = ftemp^tempy elseif ( @imagback == 34 ) tempy = ftemp^(ftemp) tempy = 1/( ftemp^tempy ) elseif ( @imagback == 35 ) tempy = log(-ftemp) elseif ( @imagback == 36 ) tempy = 1/log( ftemp ) elseif ( @imagback == 37 ) tempy = ftemp * log( ftemp ) elseif ( @imagback == 38 ) tempy = sin( ftemp ) / ftemp elseif ( @imagback == 39 ) tempy = cos( ftemp ) / ftemp elseif ( @imagback == 40 ) tempy = sin( ftemp ) * cos( ftemp ) elseif ( @imagback == 41 ) tempy = sin( ftemp^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/ftemp ) elseif ( @imagback == 43 ) tempy = ftemp * exp( ftemp ) elseif ( @imagback == 44 ) tempy = ftemp * exp( -ftemp ) elseif ( @imagback == 45 ) tempy = ftemp * exp( 1/ftemp ) elseif ( @imagback == 46 ) tempy = ftemp * exp( -1/ftemp ) elseif ( @imagback == 47 ) tempy = ftemp * ftemp * ftemp elseif ( @imagback == 48 ) tempy = 1 / ( ftemp * ftemp * ftemp ) elseif ( @imagback == 49 ) tempy = atan( 1 / ftemp ) elseif ( @imagback == 50 ) tempy = acos( 1 / ftemp ) elseif ( @imagback == 51 ) tempy = asin( 1 / ftemp ) elseif ( @imagback == 52 ) tempy = tan( ftemp ) / ftemp elseif ( @imagback == 53 ) tempy = cotan( ftemp ) / ftemp elseif ( @imagback == 54 ) tempy = 1 / ( ftemp * cos( ftemp )) elseif ( @imagback == 55 ) tempy = 1 / ( ftemp * sin( ftemp )) elseif ( @imagback == 56 ) tempy = ftemp * sin( ftemp ) elseif ( @imagback == 57 ) tempy = ftemp * cos( ftemp ) elseif ( @imagback == 58 ) tempy = ftemp * tan( ftemp ) elseif ( @imagback == 59 ) tempy = ftemp * cotan( ftemp ) elseif ( @imagback == 60 ) tempy = ftemp/cos( ftemp ) elseif ( @imagback == 61 ) tempy = ftemp/sin( ftemp ) elseif ( @imagback == 62 ) tempy = sin( 1/ftemp ) elseif ( @imagback == 63 ) tempy = cos( 1/ftemp ) elseif ( @imagback == 64 ) tempy = tan( 1/ftemp ) elseif ( @imagback == 65 ) tempy = cotan( 1/ftemp ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/ftemp ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/ftemp ) elseif ( @imagback == 68 ) tempy = cotanh( ftemp ) elseif ( @imagback == 69 ) tempy = 1/cosh( ftemp ) elseif ( @imagback == 70 ) tempy = 1/sinh( ftemp ) elseif ( @imagback == 71 ) tempy = atanh( 1/ftemp ) elseif ( @imagback == 72 ) tempy = acosh( 1/ftemp ) elseif ( @imagback == 73 ) tempy = asinh( 1/ftemp ) elseif @imagback == 74 tempy = ftemp^@ibpower elseif @imagback == 75 tempy = sinh(ftemp) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( ftemp ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(ftemp) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( ftemp ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(ftemp) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( ftemp ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/ftemp) elseif @imagback == 82 tempy = cosh(1/ftemp) elseif @imagback == 83 tempy = tanh(1/ftemp) elseif @imagback == 84 tempy = cotanh(1/ftemp) elseif @imagback == 85 tempy = 1/cosh(1/ftemp) elseif @imagback == 86 tempy = 1/sinh(1/ftemp) elseif @imagback == 87 tempy = sin( ftemp ) * tan(ftemp) elseif @imagback == 88 tempy = sinh(ftemp) * tanh(ftemp) elseif @imagback == 89 tempy = sinh(ftemp) * cosh(ftemp) elseif @imagback == 90 tempy = sinh(ftemp), ftemp2 = cosh(ftemp) tempy = tempy*tempy*ftemp2*ftemp2 elseif @imagback == 91 tempy = sin(ftemp), ftemp2 = cos(ftemp) tempy = tempy*tempy*ftemp2*ftemp2 elseif @imagback == 92 tempy = 1/ftemp tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/ftemp ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(ftemp) * cos(1/ftemp) elseif @imagback == 95 tempy = sin(ftemp) * sin(1/ftemp) elseif @imagback == 96 tempy = log(ftemp) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(ftemp) * sin(2*ftemp) elseif @imagback == 98 tempy = exp(2*ftemp) elseif @imagback == 99 tempy = exp(-2*ftemp) elseif @imagback == 100 tempy = 1/ftemp tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/ftemp ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(ftemp) * cosh(1/ftemp) elseif @imagback == 103 tempy = sinh(ftemp) * sinh(1/ftemp) elseif @imagback == 104 tempy = sin(ftemp) * sinh(ftemp) elseif @imagback == 105 tempy = sin(ftemp) * cosh(ftemp) elseif @imagback == 106 tempy = sin(ftemp), ftemp2 = sinh(ftemp) tempy = tempy*tempy*ftemp2*ftemp2 elseif @imagback == 107 tempy = sin(ftemp)*exp(ftemp) elseif @imagback == 108 tempy = cos(ftemp)*exp(ftemp) elseif @imagback == 109 tempy = sinh(ftemp)*exp(ftemp) elseif @imagback == 110 tempy = cosh(ftemp)*exp(ftemp) elseif @imagback == 111 tempy = sin(ftemp)*log(ftemp) elseif @imagback == 112 tempy = cos(ftemp)*log(ftemp) elseif @imagback == 113 tempy = sinh(ftemp)*log(ftemp) elseif @imagback == 114 tempy = cosh(ftemp)*log(ftemp) elseif @imagback == 115 tempy = exp(ftemp^2) elseif @imagback == 116 tempy = exp(1/(ftemp^2)) elseif @imagback == 117 tempy = abs(ftemp) elseif @imagback == 118 tempy = round(ftemp) elseif @imagback == 119 tempy = trunc(ftemp) elseif @imagback == 120 tempy = ceil(ftemp) elseif @imagback == 121 tempy = floor(ftemp) elseif @imagback == 122 tempy = ftemp/log(ftemp) elseif @imagback == 123 tempy = log(ftemp)/ftemp elseif @imagback == 124 tempy = exp(ftemp)/ftemp elseif @imagback == 125 tempy = exp(1/ftemp)/ftemp elseif @imagback == 126 tempy = exp(ftemp^2)/ftemp elseif @imagback == 127 tempy = exp(1/(ftemp^2))/ftemp elseif @imagback == 128 tempy = ftemp * exp(ftemp^2) elseif @imagback == 129 tempy = ftemp * exp(1/(ftemp^2)) elseif @imagback == 130 tempy = exp(-(ftemp^2)) elseif @imagback == 131 tempy = exp(-1/(ftemp^2)) elseif @imagback == 132 tempy = exp(-(ftemp^2))/ftemp elseif @imagback == 133 tempy = exp(-1/(ftemp^2))/ftemp elseif @imagback == 134 tempy = ftemp * exp(-(ftemp^2)) else ; @imagback == 135 tempy = ftemp * exp(-1/(ftemp^2)) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) if @absolutet2 tempc = abs(tempc) endif ; @absolutet2 if @absoluter7 tempc = abs(real(tempc)) + flip(imag(tempc)) endif ; @absoluter7 if @absolutei7 tempc = real(tempc) + flip(abs(imag(tempc))) endif ; @absolutei7 tangle = atan2( tempc ) if ( tangle < 0 ) tangle = tangle + twopi endif ; tangle if @twavy ftemp = cabs( tempc ) if @twavmode == 0 ; radial mode ftemp = ftemp + @twavamp * ftemp * sin( @twavfreq * tangle ) ; vary radius tempc = ftemp * exp( flip( tangle )) ; compute new tempc else ; tangential mode tangle = tangle + @twavamp * tangle * sin( @twavfreq * ftemp ) ; vary azimuth tempc = ftemp * exp( flip( tangle )) ; compute new tempc endif ; @twavmode endif ; @twavy if @varytraptype != 0 if @varytraptype == 1 ; flip tempc = flip(tempc) elseif @varytraptype == 2 ; conjugate tempc = conj(tempc) elseif @varytraptype == 3 ; flip conjugate tempc = flip(conj(tempc)) elseif @varytraptype == 4 ; negate tempc = -tempc elseif @varytraptype == 5 ; negate flip tempc = -flip(tempc) elseif @varytraptype == 6 ; negate conjugate tempc = -conj(tempc) elseif @varytraptype == 7 ; negate flip conj = conj flip tempc = -flip(conj(tempc)) endif ; @varytraptype endif ; @varytraptype ; if @pointmode ; compare subsequent values to first trap point on trap graph ; endif ; @pointmode if @modflavor ztemp = zinput else ztemp = z1 endif ; @modflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 2 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 3 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 4 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 5 ) ; angle test = tempangle elseif ( @trapmode == 6 ) ; trap angle test = tangle elseif ( @trapmode == 7 ) ; raw angle test = zangle elseif ( @trapmode == 8 ) ; difference angle test = abs( tempangle - tangle) elseif ( @trapmode == 9 ) ; difference angle 2 test = abs( zangle - tangle ) elseif ( @trapmode == 10 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 11 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 12 ) ; sum test = cabs( ztemp + tempc ) elseif ( @trapmode == 13 ) ; product test = cabs( ztemp * tempc ) elseif ( @trapmode == 14 ) ; quotient 1 test = cabs( ztemp / tempc ) elseif ( @trapmode == 15 ) ; quotient 2 test = cabs( tempc / ztemp ) elseif ( @trapmode == 16 ) ; power 1 test = cabs( ztemp ^ tempc ) elseif ( @trapmode == 17 ) ; power 2 test = cabs( tempc ^ ztemp ) elseif ( @trapmode == 18 ) ; arithmetic mean test = cabs( (ztemp + tempc)/2 ) elseif ( @trapmode == 19 ) ; geometric mean test = cabs( sqrt( ztemp * tempc )) elseif ( @trapmode == 20 ) ; angle 2 test = atan2( ztemp - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 3 test = atan2( ztemp + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 4 test = atan2( ztemp * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 5 test = atan2( ztemp / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 6 test = atan2( tempc / ztemp ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 7 test = atan2( ztemp ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; angle 8 test = atan2( tempc ^ ztemp ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 27 ) ; real 2 test = abs( real( ztemp - tempc )) elseif ( @trapmode == 28 ) ; real 3 test = abs( real( ztemp + tempc )) elseif ( @trapmode == 29 ) ; real 4 test = abs( real( ztemp * tempc )) elseif ( @trapmode == 30 ) ; real 5 test = abs( real( ztemp / tempc )) elseif ( @trapmode == 31 ) ; real 6 test = abs( real( tempc / ztemp )) elseif ( @trapmode == 32 ) ; real 7 test = abs( real( ztemp ^ tempc )) elseif ( @trapmode == 33 ) ; real 8 test = abs( real( tempc ^ ztemp )) elseif ( @trapmode == 34 ) ; imag 2 test = abs( imag( ztemp - tempc )) elseif ( @trapmode == 35 ) ; imag 3 test = abs( imag( ztemp + tempc )) elseif ( @trapmode == 36 ) ; imag 4 test = abs( imag( ztemp * tempc )) elseif ( @trapmode == 37 ) ; imag 5 test = abs( imag( ztemp / tempc )) elseif ( @trapmode == 38 ) ; imag 6 test = abs( imag( tempc / ztemp )) elseif ( @trapmode == 39 ) ; imag 7 test = abs( imag( ztemp ^ tempc )) elseif ( @trapmode == 40 ) ; imag 8 test = abs( imag( tempc ^ ztemp )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < tvtrapped ) tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > tvtrapped ) tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < tvtrapped ) tvtrapped2 = tvtrapped, itrapped2 = itrapped, zatrapped2 = zatrapped, tatrapped2 = tatrapped ztrapped2 = ztrapped, zitrapped2 = zitrapped, ttrapped2 = ttrapped tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped2 = ziatrapped, ziatrapped = tempangle endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < tvtrapped ) tvtrapped3 = tvtrapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, tatrapped3 = tatrapped2 ztrapped3 = ztrapped2, zitrapped3 = zitrapped2, ttrapped3 = ttrapped2 tvtrapped2 = tvtrapped, itrapped2 = itrapped, zatrapped2 = zatrapped, tatrapped2 = tatrapped ztrapped2 = ztrapped, zitrapped2 = zitrapped, ttrapped2 = ttrapped tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped3 = ziatrapped2, ziatrapped2 = ziatrapped, ziatrapped = tempangle endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < tvtrapped ) tvtrapped4 = tvtrapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, tatrapped4 = tatrapped3 ztrapped4 = ztrapped3, zitrapped4 = zitrapped3, ttrapped4 = ttrapped3 tvtrapped3 = tvtrapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, tatrapped3 = tatrapped2 ztrapped3 = ztrapped2, zitrapped3 = zitrapped2, ttrapped3 = ttrapped2 tvtrapped2 = tvtrapped, itrapped2 = itrapped, zatrapped2 = zatrapped, tatrapped2 = tatrapped ztrapped2 = ztrapped, zitrapped2 = zitrapped, ttrapped2 = ttrapped tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped4 = ziatrapped3, ziatrapped3 = ziatrapped2, ziatrapped2 = ziatrapped, ziatrapped = tempangle endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > tvtrapped ) tvtrapped2 = tvtrapped, itrapped2 = itrapped, zatrapped2 = zatrapped, tatrapped2 = tatrapped ztrapped2 = ztrapped, zitrapped2 = zitrapped, ttrapped2 = ttrapped tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped2 = ziatrapped, ziatrapped = tempangle endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > tvtrapped ) tvtrapped3 = tvtrapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, tatrapped3 = tatrapped2 ztrapped3 = ztrapped2, zitrapped3 = zitrapped2, ttrapped3 = ttrapped2 tvtrapped2 = tvtrapped, itrapped2 = itrapped, zatrapped2 = zatrapped, tatrapped2 = tatrapped ztrapped2 = ztrapped, zitrapped2 = zitrapped, ttrapped2 = ttrapped tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped3 = ziatrapped2, ziatrapped2 = ziatrapped, ziatrapped = tempangle endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > tvtrapped ) tvtrapped4 = tvtrapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, tatrapped4 = tatrapped3 ztrapped4 = ztrapped3, zitrapped4 = zitrapped3, ttrapped4 = ttrapped3 tvtrapped3 = tvtrapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, tatrapped3 = tatrapped2 ztrapped3 = ztrapped2, zitrapped3 = zitrapped2, ttrapped3 = ttrapped2 tvtrapped2 = tvtrapped, itrapped2 = itrapped, zatrapped2 = zatrapped, tatrapped2 = tatrapped ztrapped2 = ztrapped, zitrapped2 = zitrapped, ttrapped2 = ttrapped tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped4 = ziatrapped3, ziatrapped3 = ziatrapped2, ziatrapped2 = ziatrapped, ziatrapped = tempangle endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle elseif test > innerradius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle endif ; ringstyle endif ; test endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle elseif test > innerradius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle endif ; ringstyle endif ; test elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle tvtrapped = count * test, itrapped = count * iter zatrapped = count * zangle, tatrapped = count * tangle ztrapped = count * z1, zitrapped = count * zinput ttrapped = count * tempc, trapped = TRUE ziatrapped = tempangle elseif test > innerradius tvtrapped = count * test, itrapped = count * iter zatrapped = count * zangle, tatrapped = count * tangle ztrapped = count * z1, zitrapped = count * zinput ttrapped = count * tempc, trapped = TRUE ziatrapped = tempangle endif ; ringstyle endif ; test elseif ( @whattotrap == 11 ) ; 2nd to dip below threshold value if ( test < thresh ) if ( itrapped == 0 ) ; nothing trapped yet, set flag for next time itrapped = -1, trapped = TRUE elseif itrapped == -1 ; must be the 2nd threshold value if !@ringstyle tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle elseif test > innerradius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 12 ) ; 1st to exceed threshold limit if ( itrapped == 0 ) ; nothing trapped yet if ( test > thresh ) if !@ringstyle tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle elseif test < innerradius ; really an outer radius for limits tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle endif ; ringstyle endif ; test endif ; itrapped elseif ( @whattotrap == 13 ) ; 2nd to exceed threshold limit if ( test > thresh ) if ( itrapped == 0 ) ; nothing trapped yet, set flag for next time itrapped = -1, trapped = TRUE elseif itrapped == -1 ; must be the 2nd threshold value if !@ringstyle tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle elseif test < innerradius ; really an outer radius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle elseif test < innerradius ; really an outer radius for limits tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle endif ; ringstyle endif ; test elseif ( @whattotrap == 15 ) ; Nth z1 iterate itercount = itercount + 1 if itercount == @nthiterate tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle endif ; itercount elseif ( @whattotrap == 16 ) ; last z1 iterate; just store them all tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle elseif @whattotrap > 16 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, tvtrapped the min if test < tvtrapped ; is it a new min? tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = z1, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle elseif test > tvtrapped2 ; is it a new max? tvtrapped2 = test, itrapped2 = iter, zatrapped2 = zangle, tatrapped2 = tangle ztrapped2 = z1, zitrapped2 = zinput, ttrapped2 = tempc, trapped = TRUE ziatrapped2 = tempangle endif ; test endif ; whattotrap if ( @varymode == 0 ) ; feedback only on iterations where something was trapped vary = trapped elseif ( @varymode == 1 ) ; feedback when nothing was trapped vary = !trapped else ; feedback on each iteration, if enabled for a given parameter vary = TRUE endif ; varymode trapped = FALSE ; reset flag for next iteration if vary ; vary chosen parameter if set ftemp = cabs(zinput) sign = real(zinput)/abs(real(zinput)) if @varyrotation rotation = rotation + rotationstep * rotation * ftemp * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * ftemp * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * ftemp * sign if @ringstyle if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; ringstyle endif ; varythresh if @varyrwidth rwidth = rwidth + ringstep * rwidth * ftemp * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varycenter tempx = real(center) + centerstep * real(center) * ftemp * sign tempy = imag(center) + centerstep * imag(center) * ftemp * sign center = tempx + flip( tempy ) endif ; varycenter if @varyfBm fBmmamount = fBmmamount + fBmstep * fBmmamount * ftemp * sign endif ; varyfBm endif ; vary endif ; iter final: if ( itrapped != 0 ) ; something has been trapped if (( @whattotrap == 2 ) || ( @whattotrap == 5 )) ; we need to swap some values ; so we will plot the right thing tvtrapped = tvtrapped2, itrapped = itrapped2, zatrapped = zatrapped2, tatrapped = tatrapped2 ztrapped = ztrapped2, zitrapped = zitrapped2, ttrapped = ttrapped2, ziatrapped = ziatrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) tvtrapped = tvtrapped3, itrapped = itrapped3, zatrapped = zatrapped3, tatrapped = tatrapped3 ztrapped = ztrapped3, zitrapped = zitrapped3, ttrapped = ttrapped3, ziatrapped = ziatrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) tvtrapped = tvtrapped4, itrapped = itrapped4, zatrapped = zatrapped4, tatrapped = tatrapped4 ztrapped = ztrapped4, zitrapped = zitrapped4, ttrapped = ttrapped4, ziatrapped = ziatrapped4 elseif @whattotrap == 17 ; max-min tvtrapped = tvtrapped2-tvtrapped, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, tatrapped = tatrapped2-tatrapped ztrapped = ztrapped2-ztrapped, zitrapped = zitrapped2-zitrapped ttrapped = ttrapped2-ttrapped, ziatrapped = ziatrapped2-ziatrapped elseif @whattotrap == 18 ; max+min tvtrapped = tvtrapped2+tvtrapped, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, tatrapped = tatrapped2+tatrapped ztrapped = ztrapped2+ztrapped, zitrapped = zitrapped2+zitrapped ttrapped = ttrapped2+ttrapped, ziatrapped = ziatrapped2+ziatrapped elseif @whattotrap == 19 ; max*min tvtrapped = tvtrapped2*tvtrapped, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, tatrapped = tatrapped2*tatrapped ztrapped = ztrapped2*ztrapped, zitrapped = zitrapped2*zitrapped ttrapped = ttrapped2*ttrapped, ziatrapped = ziatrapped2*ziatrapped elseif @whattotrap == 20 ; max/min tvtrapped = tvtrapped2/tvtrapped, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, tatrapped = tatrapped2/tatrapped ztrapped = ztrapped2/ztrapped, zitrapped = zitrapped2/zitrapped ttrapped = ttrapped2/ttrapped, ziatrapped = ziatrapped2/ziatrapped elseif @whattotrap == 21 ; max^min tvtrapped = tvtrapped2^tvtrapped, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, tatrapped = tatrapped2^tatrapped ztrapped = ztrapped2^ztrapped, zitrapped = zitrapped2^zitrapped ttrapped = ttrapped2^ttrapped, ziatrapped = ziatrapped2^ziatrapped elseif @whattotrap == 22 ; min-max tvtrapped = tvtrapped-tvtrapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, tatrapped = tatrapped-tatrapped2 ztrapped = ztrapped-ztrapped2, zitrapped = zitrapped-zitrapped2 ttrapped = ttrapped-ttrapped2, ziatrapped = ziatrapped-ziatrapped2 elseif @whattotrap == 23 ; min/max tvtrapped = tvtrapped/tvtrapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, tatrapped = tatrapped/tatrapped2 ztrapped = ztrapped/ztrapped2, zitrapped = zitrapped/zitrapped2 ttrapped = ttrapped/ttrapped2, ziatrapped = ziatrapped/ziatrapped2 elseif @whattotrap == 24 ; min^max tvtrapped = tvtrapped^tvtrapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, tatrapped = tatrapped^tatrapped2 ztrapped = ztrapped^ztrapped2, zitrapped = zitrapped^zitrapped2 ttrapped = ttrapped^ttrapped2, ziatrapped = ziatrapped^ziatrapped2 elseif @whattotrap == 25 ; average: (max+min)/2 tvtrapped = (tvtrapped+tvtrapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, tatrapped = (tatrapped+tatrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zitrapped = (zitrapped+zitrapped2)/2 ttrapped = (ttrapped+ttrapped2)/2, ziatrapped = (ziatrapped2+ziatrapped)/2 endif ; whattotrap ; If enabled, mask this point if @maskA ; check the first mask if ( @maskwhatA == 0 ) ; distance ftemp = cabs( ztrapped - ttrapped ) elseif ( @maskwhatA == 1 ) ; mod distance (distance to zinput, not z1) ftemp = cabs( zitrapped - ttrapped ) elseif ( @maskwhatA == 2 ) ; magnitude ftemp = cabs(ztrapped) elseif ( @maskwhatA == 3 ) ; modulated magnitude ftemp = cabs(zitrapped) elseif ( @maskwhatA == 4 ) ; flavor value (formerly called 'test') ftemp = tvtrapped if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 5 ) ; iteration ftemp = itrapped elseif ( @maskwhatA == 6 ) ; angle ftemp = zatrapped if @maskAmod ftemp = ftemp/twopi endif ; @maskAmod elseif ( @maskwhatA == 7 ) ; modulated angle ftemp = ziatrapped if @maskAmod ftemp = abs(ftemp)/twopi endif ; @maskAmod elseif ( @maskwhatA == 8 ) ; real ftemp = real( ztrapped ) if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 9 ) ; modulated real ftemp = real( zitrapped ) if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 10 ) ; imaginary ftemp = imag( ztrapped ) if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 11 ) ; modulated imaginary ftemp = imag( zitrapped ) if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 12 ) ; trap magnitude ftemp = cabs(ttrapped) elseif ( @maskwhatA == 13 ) ; trap angle ftemp = tatrapped if @maskAmod ftemp = abs(ftemp)/twopi endif ; @maskAmod elseif ( @maskwhatA == 14 ) ; trap real ftemp = real( ttrapped ) if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 15 ) ; trap imaginary ftemp = imag( ttrapped ) if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 16 ) ; difference angle ftemp = ziatrapped - tatrapped if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 17 ) ; difference angle 2 ftemp = zatrapped - tatrapped if @maskAmod ftemp = abs(ftemp) endif ; @maskAmod elseif ( @maskwhatA == 18 ) ; sum if @maskAmod ftemp = cabs( zitrapped + ttrapped ) else ftemp = cabs( ztrapped + ttrapped ) endif ; @maskAmod elseif ( @maskwhatA == 19 ) ; product if @maskAmod ftemp = cabs( zitrapped * ttrapped ) else ftemp = cabs( ztrapped * ttrapped ) endif ; @maskAmod elseif ( @maskwhatA == 20 ) ; quotient 1 if @maskAmod ftemp = cabs( zitrapped / ttrapped ) else ftemp = cabs( ztrapped / ttrapped ) endif ; @maskAmod elseif ( @maskwhatA == 21 ) ; quotient 2 if @maskAmod ftemp = cabs( ttrapped / zitrapped ) else ftemp = cabs( ttrapped / ztrapped ) endif ; @maskAmod elseif ( @maskwhatA == 22 ) ; power 1 if @maskAmod ftemp = cabs( zitrapped ^ ttrapped ) else ftemp = cabs( ztrapped ^ ttrapped ) endif ; @maskAmod elseif ( @maskwhatA == 23 ) ; power 2 if @maskAmod ftemp = cabs( ttrapped ^ zitrapped ) else ftemp = cabs( ttrapped ^ ztrapped ) endif ; @maskAmod elseif ( @maskwhatA == 24 ) ; arithmetic mean if @maskAmod ftemp = cabs( (zitrapped + ttrapped)/2 ) else ftemp = cabs( (ztrapped + ttrapped)/2 ) endif ; @maskAmod elseif ( @maskwhatA == 25 ) ; geometric mean if @maskAmod ftemp = cabs( sqrt(zitrapped * ttrapped) ) else ftemp = cabs( sqrt(ztrapped * ttrapped) ) endif ; @maskAmod endif ; @maskwhatA if @maskifA == "falls above" if ftemp > @maskAmin maskAset = TRUE endif ; ftemp elseif @maskifA == "falls below" if ftemp < @maskAmin maskAset = TRUE endif ; ftemp elseif @maskifA == "falls between" if (ftemp > @maskAmin) && (ftemp < @maskAmax) maskAset = TRUE endif ; ftemp elseif @maskifA == "falls outside" if (ftemp < @maskAmin) || (ftemp > @maskAmax) maskAset = TRUE endif ; ftemp elseif @maskifA == "equals" if ftemp == @maskAmin maskAset = TRUE endif ; ftemp elseif @maskifA == "not equal" if ftemp != @maskAmin maskAset = TRUE endif ; ftemp endif ; @maskifA endif ; maskA if @maskB ; check the first mask if ( @maskwhatB == 0 ) ; distance ftemp = cabs( ztrapped - ttrapped ) elseif ( @maskwhatB == 1 ) ; mod distance (distance to zinput, not z1) ftemp = cabs( zitrapped - ttrapped ) elseif ( @maskwhatB == 2 ) ; magnitude ftemp = cabs(ztrapped) elseif ( @maskwhatB == 3 ) ; modulated magnitude ftemp = cabs(zitrapped) elseif ( @maskwhatB == 4 ) ; flavor value (formerly called 'test') ftemp = tvtrapped if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 5 ) ; iteration ftemp = itrapped elseif ( @maskwhatB == 6 ) ; angle ftemp = zatrapped if @maskBmod ftemp = ftemp/twopi endif ; @maskBmod elseif ( @maskwhatB == 7 ) ; modulated angle ftemp = ziatrapped if @maskBmod ftemp = abs(ftemp)/twopi endif ; @maskBmod elseif ( @maskwhatB == 8 ) ; real ftemp = real( ztrapped ) if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 9 ) ; modulated real ftemp = real( zitrapped ) if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 10 ) ; imaginary ftemp = imag( ztrapped ) if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 11 ) ; modulated imaginary ftemp = imag( zitrapped ) if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 12 ) ; trap magnitude ftemp = cabs(ttrapped) elseif ( @maskwhatB == 13 ) ; trap angle ftemp = tatrapped if @maskBmod ftemp = abs(ftemp)/twopi endif ; @maskBmod elseif ( @maskwhatB == 14 ) ; trap real ftemp = real( ttrapped ) if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 15 ) ; trap imaginary ftemp = imag( ttrapped ) if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 16 ) ; difference angle ftemp = ziatrapped - tatrapped if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 17 ) ; difference angle 2 ftemp = zatrapped - tatrapped if @maskBmod ftemp = abs(ftemp) endif ; @maskBmod elseif ( @maskwhatB == 18 ) ; sum if @maskBmod ftemp = cabs( zitrapped + ttrapped ) else ftemp = cabs( ztrapped + ttrapped ) endif ; @maskBmod elseif ( @maskwhatB == 19 ) ; product if @maskBmod ftemp = cabs( zitrapped * ttrapped ) else ftemp = cabs( ztrapped * ttrapped ) endif ; @maskBmod elseif ( @maskwhatB == 20 ) ; quotient 1 if @maskBmod ftemp = cabs( zitrapped / ttrapped ) else ftemp = cabs( ztrapped / ttrapped ) endif ; @maskBmod elseif ( @maskwhatB == 21 ) ; quotient 2 if @maskBmod ftemp = cabs( ttrapped / zitrapped ) else ftemp = cabs( ttrapped / ztrapped ) endif ; @maskBmod elseif ( @maskwhatB == 22 ) ; power 1 if @maskBmod ftemp = cabs( zitrapped ^ ttrapped ) else ftemp = cabs( ztrapped ^ ttrapped ) endif ; @maskBmod elseif ( @maskwhatB == 23 ) ; power 2 if @maskBmod ftemp = cabs( ttrapped ^ zitrapped ) else ftemp = cabs( ttrapped ^ ztrapped ) endif ; @maskBmod elseif ( @maskwhatB == 24 ) ; arithmetic mean if @maskBmod ftemp = cabs( (zitrapped + ttrapped)/2 ) else ftemp = cabs( (ztrapped + ttrapped)/2 ) endif ; @maskBmod elseif ( @maskwhatB == 25 ) ; geometric mean if @maskBmod ftemp = cabs( sqrt(zitrapped * ttrapped) ) else ftemp = cabs( sqrt(ztrapped * ttrapped) ) endif ; @maskBmod endif ; @maskwhatB if @maskifB == "falls above" if ftemp > @maskBmin maskBset = TRUE endif ; ftemp elseif @maskifB == "falls below" if ftemp < @maskBmin maskBset = TRUE endif ; ftemp elseif @maskifB == "falls between" if (ftemp > @maskBmin) && (ftemp < @maskBmax) maskBset = TRUE endif ; ftemp elseif @maskifB == "falls outside" if (ftemp < @maskBmin) || (ftemp > @maskBmax) maskBset = TRUE endif ; ftemp elseif @maskifB == "equals" if ftemp == @maskBmin maskBset = TRUE endif ; ftemp elseif @maskifB == "not equal" if ftemp != @maskAmin maskBset = TRUE endif ; ftemp endif ; @maskifB endif ; maskB ; Mask combination logic if @maskA && @maskB if @maskcombo == "or" if maskAset || maskBset #solid = TRUE solidset = TRUE endif ; maskAset elseif @maskcombo == "and" if maskAset && maskBset #solid = TRUE solidset = TRUE endif ; maskAset elseif @maskcombo == "not" if maskAset && !maskBset #solid = TRUE solidset = TRUE endif ; maskAset elseif @maskcombo == "eor" if (maskAset && !maskBset) || (!maskAset && maskBset) #solid = TRUE solidset = TRUE endif ; maskAset elseif @maskcombo == "nor" if !(maskAset || maskBset) #solid = TRUE solidset = TRUE endif ; maskAset elseif @maskcombo == "nand" if !(maskAset && maskBset) #solid = TRUE solidset = TRUE endif ; maskAset elseif @maskcombo == "neor" if !((maskAset && !maskBset) || (!maskAset && maskBset)) #solid = TRUE solidset = TRUE endif ; maskAset elseif @maskcombo == "Aor!B" if maskAset || !maskBset #solid = TRUE solidset = TRUE endif ; maskAset endif ; @maskcombo elseif @maskA if maskAset #solid = TRUE solidset = TRUE endif ; maskAset elseif @maskB if maskBset #solid = TRUE solidset = TRUE endif ; maskBset endif ; @maskA && @maskB ; Figure amount of texture ; Texture code adapted from code of ldm & reb if !solidset if @texture if @texinit == "z" ztemp2 = ztrapped elseif @texinit == "mod z" ztemp2 = zitrapped else ; @texinit == "trap" ztemp2 = ttrapped endif ; @texinit index = 0 ztemp2 = ztemp2*10^@texpower while index < 4 if ( texfunc[index] == 0 ) ztemp = ztemp2 elseif ( texfunc[index] == 1 ) ztemp = 1/ztemp2 elseif ( texfunc[index] == 2 ) ztemp = ztemp2 * ztemp2 elseif ( texfunc[index] == 3 ) ztemp = 1 / ( ztemp2 * ztemp2 ) elseif ( texfunc[index] == 4 ) ztemp = log(ztemp2) elseif ( texfunc[index] == 5 ) ztemp = exp( ztemp2) elseif ( texfunc[index] == 6 ) ztemp = ztemp2^ztemp2 elseif ( texfunc[index] == 7 ) ztemp = sin( ztemp2 ) elseif ( texfunc[index] == 8 ) ztemp = cos( ztemp2 ) elseif ( texfunc[index] == 9 ) ztemp = tan( ztemp2 ) elseif ( texfunc[index] == 10 ) ztemp = asin( ztemp2 ) elseif ( texfunc[index] == 11 ) ztemp = acos( ztemp2 ) elseif ( texfunc[index] == 12 ) ztemp = atan( ztemp2 ) elseif ( texfunc[index] == 13 ) ztemp = sinh( ztemp2 ) elseif ( texfunc[index] == 14 ) ztemp = cosh( ztemp2 ) elseif ( texfunc[index] == 15 ) ztemp = tanh( ztemp2 ) elseif ( texfunc[index] == 16 ) ztemp = asinh( ztemp2 ) elseif ( texfunc[index] == 17 ) ztemp = acosh( ztemp2 ) elseif ( texfunc[index] == 18 ) ztemp = atanh( ztemp2 ) elseif ( texfunc[index] == 19 ) ztemp = log( 1/ztemp2 ) elseif ( texfunc[index] == 20 ) ztemp = log( log( ztemp2 )) elseif ( texfunc[index] == 21 ) ztemp = exp( -ztemp2 ) elseif ( texfunc[index] == 22 ) ztemp = exp( 1/ztemp2 ) elseif ( texfunc[index] == 23 ) ztemp = ztemp2^(-ztemp2) elseif ( texfunc[index] == 24 ) ztemp = sin( ztemp2 ) ztemp = ztemp * ztemp elseif ( texfunc[index] == 25 ) ztemp = cos( ztemp2 ) ztemp = ztemp * ztemp elseif ( texfunc[index] == 26 ) ztemp = tan( ztemp2 ) ztemp = ztemp * ztemp elseif ( texfunc[index] == 27 ) ztemp = cotan( ztemp2 ) elseif ( texfunc[index] == 28 ) ztemp = 1/cos( ztemp2 ) elseif ( texfunc[index] == 29 ) ztemp = 1/sin( ztemp2 ) elseif ( texfunc[index] == 30 ) ztemp = cotan( ztemp2 ) ztemp = ztemp * ztemp elseif ( texfunc[index] == 31 ) ztemp = 1/cos( ztemp2 ) ztemp = ztemp * ztemp elseif ( texfunc[index] == 32 ) ztemp = 1/sin( ztemp2 ) ztemp = ztemp * ztemp elseif ( texfunc[index] == 33 ) ztemp = ztemp2^(ztemp2) ztemp = ztemp2^ztemp elseif ( texfunc[index] == 34 ) ztemp = ztemp2^(ztemp2) ztemp = 1/( ztemp2^ztemp ) elseif ( texfunc[index] == 35 ) ztemp = log(-ztemp2) elseif ( texfunc[index] == 36 ) ztemp = 1/log( ztemp2 ) elseif ( texfunc[index] == 37 ) ztemp = ztemp2 * log( ztemp2 ) elseif ( texfunc[index] == 38 ) ztemp = sin( ztemp2 ) / ztemp2 elseif ( texfunc[index] == 39 ) ztemp = cos( ztemp2 ) / ztemp2 elseif ( texfunc[index] == 40 ) ztemp = sin( ztemp2 ) * cos( ztemp2 ) elseif ( texfunc[index] == 41 ) ztemp = sin( ztemp2^2 ) elseif ( texfunc[index] == 42 ) ztemp = exp( -1/ztemp2 ) elseif ( texfunc[index] == 43 ) ztemp = ztemp2 * exp( ztemp2 ) elseif ( texfunc[index] == 44 ) ztemp = ztemp2 * exp( -ztemp2 ) elseif ( texfunc[index] == 45 ) ztemp = ztemp2 * exp( 1/ztemp2 ) elseif ( texfunc[index] == 46 ) ztemp = ztemp2 * exp( -1/ztemp2 ) elseif ( texfunc[index] == 47 ) ztemp = ztemp2 * ztemp2 * ztemp2 elseif ( texfunc[index] == 48 ) ztemp = 1 / ( ztemp2 * ztemp2 * ztemp2 ) elseif ( texfunc[index] == 49 ) ztemp = atan( 1 / ztemp2 ) elseif ( texfunc[index] == 50 ) ztemp = acos( 1 / ztemp2 ) elseif ( texfunc[index] == 51 ) ztemp = asin( 1 / ztemp2 ) elseif ( texfunc[index] == 52 ) ztemp = tan( ztemp2 ) / ztemp2 elseif ( texfunc[index] == 53 ) ztemp = cotan( ztemp2 ) / ztemp2 elseif ( texfunc[index] == 54 ) ztemp = 1 / ( ztemp2 * cos( ztemp2 )) elseif ( texfunc[index] == 55 ) ztemp = 1 / ( ztemp2 * sin( ztemp2 )) elseif ( texfunc[index] == 56 ) ztemp = ztemp2 * sin( ztemp2 ) elseif ( texfunc[index] == 57 ) ztemp = ztemp2 * cos( ztemp2 ) elseif ( texfunc[index] == 58 ) ztemp = ztemp2 * tan( ztemp2 ) elseif ( texfunc[index] == 59 ) ztemp = ztemp2 * cotan( ztemp2 ) elseif ( texfunc[index] == 60 ) ztemp = ztemp2/cos( ztemp2 ) elseif ( texfunc[index] == 61 ) ztemp = ztemp2/sin( ztemp2 ) elseif ( texfunc[index] == 62 ) ztemp = sin( 1/ztemp2 ) elseif ( texfunc[index] == 63 ) ztemp = cos( 1/ztemp2 ) elseif ( texfunc[index] == 64 ) ztemp = tan( 1/ztemp2 ) elseif ( texfunc[index] == 65 ) ztemp = cotan( 1/ztemp2 ) elseif ( texfunc[index] == 66 ) ztemp = 1/cos( 1/ztemp2 ) elseif ( texfunc[index] == 67 ) ztemp = 1/sin( 1/ztemp2 ) elseif ( texfunc[index] == 68 ) ztemp = cotanh( ztemp2 ) elseif ( texfunc[index] == 69 ) ztemp = 1/cosh( ztemp2 ) elseif ( texfunc[index] == 70 ) ztemp = 1/sinh( ztemp2 ) elseif ( texfunc[index] == 71 ) ztemp = atanh( 1/ztemp2 ) elseif ( texfunc[index] == 72 ) ztemp = acosh( 1/ztemp2 ) elseif ( texfunc[index] == 73 ) ztemp = asinh( 1/ztemp2 ) elseif texfunc[index] == 74 ztemp = ztemp2^@tex2power elseif texfunc[index] == 75 ztemp = sinh(ztemp2) ztemp = ztemp * ztemp elseif texfunc[index] == 76 ztemp = cosh( ztemp2 ) ztemp = ztemp * ztemp elseif texfunc[index] == 77 ztemp = tanh(ztemp2) ztemp = ztemp * ztemp elseif texfunc[index] == 78 ztemp = cotanh( ztemp2 ) ztemp = ztemp * ztemp elseif texfunc[index] == 79 ztemp = 1/cosh(ztemp2) ztemp = ztemp * ztemp elseif texfunc[index] == 80 ztemp = 1 / sinh( ztemp2 ) ztemp = ztemp * ztemp elseif texfunc[index] == 81 ztemp = sinh(1/ztemp2) elseif texfunc[index] == 82 ztemp = cosh(1/ztemp2) elseif texfunc[index] == 83 ztemp = tanh(1/ztemp2) elseif texfunc[index] == 84 ztemp = cotanh(1/ztemp2) elseif texfunc[index] == 85 ztemp = 1/cosh(1/ztemp2) elseif texfunc[index] == 86 ztemp = 1/sinh(1/ztemp2) elseif texfunc[index] == 87 ztemp = sin( ztemp2 ) * tan(ztemp2) elseif texfunc[index] == 88 ztemp = sinh(ztemp2) * tanh(ztemp2) elseif texfunc[index] == 89 ztemp = sinh(ztemp2) * cosh(ztemp2) elseif texfunc[index] == 90 ztemp = sinh(ztemp2) ztemp2 = cosh(ztemp2) ztemp = ztemp*ztemp*ztemp2*ztemp2 elseif texfunc[index] == 91 ztemp = sin(ztemp2) ztemp2 = cos(ztemp2) ztemp = ztemp*ztemp*ztemp2*ztemp2 elseif texfunc[index] == 92 ztemp = 1/ztemp2 ztemp = sin(ztemp)*cos(ztemp) elseif texfunc[index] == 93 ztemp = sin( 1/ztemp2 ) ztemp = ztemp*ztemp elseif texfunc[index] == 94 ztemp = sin(ztemp2) * cos(1/ztemp2) elseif texfunc[index] == 95 ztemp = sin(ztemp2) * sin(1/ztemp2) elseif texfunc[index] == 96 ztemp = log(ztemp2) ztemp = ztemp*ztemp elseif texfunc[index] == 97 ztemp = sin(ztemp2) * sin(2*ztemp2) elseif texfunc[index] == 98 ztemp = exp(2*ztemp2) elseif texfunc[index] == 99 ztemp = exp(-2*ztemp2) elseif texfunc[index] == 100 ztemp = 1/ztemp2 ztemp = sinh(ztemp)*cosh(ztemp) elseif texfunc[index] == 101 ztemp = sinh( 1/ztemp2 ) ztemp = ztemp*ztemp elseif texfunc[index] == 102 ztemp = sinh(ztemp2) * cosh(1/ztemp2) elseif texfunc[index] == 103 ztemp = sinh(ztemp2) * sinh(1/ztemp2) elseif texfunc[index] == 104 ztemp = sin(ztemp2) * sinh(ztemp2) elseif texfunc[index] == 105 ztemp = sin(ztemp2) * cosh(ztemp2) elseif texfunc[index] == 106 ztemp = sin(ztemp2) ztemp2 = sinh(ztemp2) ztemp = ztemp*ztemp*ztemp2*ztemp2 elseif texfunc[index] == 107 ztemp = sin(ztemp2)*exp(ztemp2) elseif texfunc[index] == 108 ztemp = cos(ztemp2)*exp(ztemp2) elseif texfunc[index] == 109 ztemp = sinh(ztemp2)*exp(ztemp2) elseif texfunc[index] == 110 ztemp = cosh(ztemp2)*exp(ztemp2) elseif texfunc[index] == 111 ztemp = sin(ztemp2)*log(ztemp2) elseif texfunc[index] == 112 ztemp = cos(ztemp2)*log(ztemp2) elseif texfunc[index] == 113 ztemp = sinh(ztemp2)*log(ztemp2) elseif texfunc[index] == 114 ztemp = cosh(ztemp2)*log(ztemp2) elseif texfunc[index] == 115 ztemp = exp(ztemp2^2) elseif texfunc[index] == 116 ztemp = exp(1/(ztemp2^2)) elseif texfunc[index] == 117 ztemp = abs(ztemp2) elseif texfunc[index] == 118 ztemp = round(ztemp2) elseif texfunc[index] == 119 ztemp = trunc(ztemp2) elseif texfunc[index] == 120 ztemp = ceil(ztemp2) elseif texfunc[index] == 121 ztemp = floor(ztemp2) elseif texfunc[index] == 122 ztemp = ztemp2/log(ztemp2) elseif texfunc[index] == 123 ztemp = log(ztemp2)/ztemp2 elseif texfunc[index] == 124 ztemp = exp(ztemp2)/ztemp2 elseif texfunc[index] == 125 ztemp = exp(1/ztemp2)/ztemp2 elseif texfunc[index] == 126 ztemp = exp(ztemp2^2)/ztemp2 elseif texfunc[index] == 127 ztemp = exp(1/(ztemp2^2))/ztemp2 elseif texfunc[index] == 128 ztemp = ztemp2 * exp(ztemp2^2) elseif texfunc[index] == 129 ztemp = ztemp2 * exp(1/(ztemp2^2)) elseif texfunc[index] == 130 ztemp = exp(-(ztemp2^2)) elseif texfunc[index] == 131 ztemp = exp(-1/(ztemp2^2)) elseif texfunc[index] == 132 ztemp = exp(-(ztemp2^2))/ztemp2 elseif texfunc[index] == 133 ztemp = exp(-1/(ztemp2^2))/ztemp2 elseif texfunc[index] == 134 ztemp = ztemp2 * exp(-(ztemp2^2)) else ; texfunc[index] == 135 ztemp = ztemp2 * exp(-1/(ztemp2^2)) endif ; texfunc[] if index == 0 ztemp2 = ztemp elseif index == 1 ztemp2 = ztemp * @texscale ztemp2 = ztemp2 - round(ztemp2) elseif index == 2 ztemp2 = ztemp elseif index == 3 ztemp2 = ztemp + @texoffset endif ; index index = index + 1 endwhile ; index ftemp = cabs(ztemp2) * @texmod texadjust = (ftemp - trunc(ftemp)) * @texamount endif ; @texture endif ; solidset ; Figure amount of fBm ; fBm code adapted from code of dmj, mt, and others if !solidset if @fBm if @fbminit == "z" ztemp2 = ztrapped elseif @fbminit == "mod z" ztemp2 = zitrapped else ; @fbminit == "trap" ztemp2 = ttrapped endif ; @fbminit complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = ztemp2 * @bscale * br float bsum = 0.0 float bfreq = 1.0 int bi = @boctaves while (bi > 0) float bx0 = floor(real(bp)) % 256 float by0 = floor(imag(bp)) % 256 if bx0 < 0 bx0 = bx0 + 256 endif ; bx0 if by0 < 0 by0 = by0 + 256 endif ; by0 float bx1 = (bx0 + 1) % 256 float by1 = (by0 + 1) % 256 float rx0 = real(bp) - floor(real(bp)) float ry0 = imag(bp) - floor(imag(bp)) float rx1 = rx0 - 1 float ry1 = ry0 - 1 float b00 = (bx0^@bpower % 65536 + by0)^@bpower % 65536 float b10 = (bx1^@bpower % 65536 + by0)^@bpower % 65536 float b01 = (bx0^@bpower % 65536 + by1)^@bpower % 65536 float b11 = (bx1^@bpower % 65536 + by1)^@bpower % 65536 float g_b00_0 = (b00)^@bpower*0.25 % 512 - 256 float g_b10_0 = (b10)^@bpower*0.25 % 512 - 256 float g_b01_0 = (b01)^@bpower*0.25 % 512 - 256 float g_b11_0 = (b11)^@bpower*0.25 % 512 - 256 float g_b00_1 = (b00+1)^@bpower*0.25 % 512 - 256 float g_b10_1 = (b10+1)^@bpower*0.25 % 512 - 256 float g_b01_1 = (b01+1)^@bpower*0.25 % 512 - 256 float g_b11_1 = (b11+1)^@bpower*0.25 % 512 - 256 float bd = 0.0 bd = 1 / sqrt(sqr(g_b00_0) + sqr(g_b00_1)) g_b00_0 = g_b00_0 * bd g_b00_1 = g_b00_1 * bd bd = 1 / sqrt(sqr(g_b10_0) + sqr(g_b10_1)) g_b10_0 = g_b10_0 * bd g_b10_1 = g_b10_1 * bd bd = 1 / sqrt(sqr(g_b01_0) + sqr(g_b01_1)) g_b01_0 = g_b01_0 * bd g_b01_1 = g_b01_1 * bd bd = 1 / sqrt(sqr(g_b11_0) + sqr(g_b11_1)) g_b11_0 = g_b11_0 * bd g_b11_1 = g_b11_1 * bd float u1 = rx0 * g_b00_0 + ry0 * g_b00_1 float v1 = rx1 * g_b10_0 + ry0 * g_b10_1 float u2 = rx0 * g_b01_0 + ry1 * g_b01_1 float v2 = rx1 * g_b11_0 + ry1 * g_b11_1 float sx = sqr(rx0) * (3 - rx0*2) float sy = sqr(ry0) * (3 - ry0*2) float ba = u1 + sx*(v1-u1) float bbb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bbb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi fBmadjust = fBmmamount * (bsum + 1) endif ; @fBm if ( @colorby == 0 ) ; distance tempcolor = cabs( ztrapped - ttrapped ) if @softendistance if tempcolor > @softdistamt ftemp = tempcolor - @softdistamt ftemp2 = ftemp + 1 tempcolor = ftemp2^(@softdistpwr+@softaccel*log(ftemp2)) - 1 + @softdistamt else tempcolor = @softdistamt endif ; tempcolor endif ; @softendistance elseif ( @colorby == 1 ) ; mod distance (distance to zinput, not #z) tempcolor = cabs( zitrapped - ttrapped ) if @softendistance if tempcolor > @softdistamt ftemp = tempcolor - @softdistamt ftemp2 = ftemp + 1 tempcolor = ftemp2^(@softdistpwr+@softaccel*log(ftemp2)) - 1 + @softdistamt else tempcolor = @softdistamt endif ; tempcolor endif ; @softendistance elseif ( @colorby == 2 ) ; magnitude tempcolor = log(cabs(ztrapped)) elseif ( @colorby == 3 ) ; modulated magnitude tempcolor = cabs(zitrapped) elseif ( @colorby == 4 ) ; flavor value (formerly called 'test') tempcolor = abs(tvtrapped) elseif ( @colorby == 5 ) ; iteration tempcolor = sqrt(log(itrapped)) elseif ( @colorby == 6 ) ; angle tempcolor = zatrapped / twopi elseif ( @colorby == 7 ) ; modulated angle tempcolor = abs(ziatrapped) / twopi elseif ( @colorby == 8 ) ; real tempcolor = abs( real( ztrapped )) elseif ( @colorby == 9 ) ; modulated real tempcolor = log(abs( real( zitrapped ))) elseif ( @colorby == 10 ) ; imaginary tempcolor = abs( imag( ztrapped )) elseif ( @colorby == 11 ) ; modulated imaginary tempcolor = log(abs( imag( zitrapped ))) elseif ( @colorby == 12 ) ; trap magnitude tempcolor = cabs(ttrapped) elseif ( @colorby == 13 ) ; trap angle tempcolor = abs(tatrapped) / twopi elseif ( @colorby == 14 ) ; trap real tempcolor = abs( real( ttrapped )) elseif ( @colorby == 15 ) ; trap imaginary tempcolor = abs( imag( ttrapped )) elseif ( @colorby == 16 ) ; fBm/texture only tempcolor = 0.5 elseif ( @colorby == 17 ) ; modulated iteration tempcolor = itrapped*5%@ncol/@ncol*10*@cd endif ; colorby ; Soften coloring of maxima if ( (@whattotrap == 1) || (@whattotrap == 5) || (@whattotrap == 6) || \ (@whattotrap == 7) || (@whattotrap > 15) ) && ( (@colorby != 4) && \ (@colorby != 5) && (@colorby != 6) && (@colorby != 7) && (@colorby < 12) ) tempcolor = (log(abs(tempcolor)))^(@maxsoften) endif ; @whattotrap if @ranges == 1 tempcolor = tempcolor + fBmadjust + texadjust else if !@maskranges tempcolor = ((tempcolor + fBmadjust + texadjust) + (itrapped % @ranges) ) / @ranges else count = (itrapped % @ranges) + 1 if @whatrange == "<=" if count <= @rangemin #solid = TRUE solidset = TRUE endif ; count elseif @whatrange == ">=" if count >= @rangemin #solid = TRUE solidset = TRUE endif ; count elseif @whatrange == "=" if count == @rangemin #solid = TRUE solidset = TRUE endif ; count elseif @whatrange == "not =" if count != @rangemin #solid = TRUE solidset = TRUE endif ; count elseif @whatrange == "between" if (count >= @rangemin) && (count <= @rangemax) #solid = TRUE solidset = TRUE endif ; count else ; @whatrange == "outside" if ((count <= @rangemin) || (count >= @rangemax)) #solid = TRUE solidset = TRUE endif ; count endif ; @whatrange if solidset == FALSE tempcolor = ((tempcolor + fBmadjust + texadjust) + (itrapped % @ranges) ) / @ranges endif ; solidset endif ; maskranges endif ; ranges endif ; solidset if !solidset if ( @colorwarp == 0 ) ftemp = tempcolor elseif ( @colorwarp == 1 ) ftemp = 1/tempcolor elseif ( @colorwarp == 2 ) ftemp = tempcolor * tempcolor elseif ( @colorwarp == 3 ) ftemp = 1 / ( tempcolor * tempcolor ) elseif ( @colorwarp == 4 ) ftemp = log(tempcolor) elseif ( @colorwarp == 5 ) ftemp = exp( tempcolor) elseif ( @colorwarp == 6 ) ftemp = tempcolor^tempcolor elseif ( @colorwarp == 7 ) ftemp = sin( tempcolor ) elseif ( @colorwarp == 8 ) ftemp = cos( tempcolor ) elseif ( @colorwarp == 9 ) ftemp = tan( tempcolor ) elseif ( @colorwarp == 10 ) ftemp = asin( tempcolor ) elseif ( @colorwarp == 11 ) ftemp = acos( tempcolor ) elseif ( @colorwarp == 12 ) ftemp = atan( tempcolor ) elseif ( @colorwarp == 13 ) ftemp = sinh( tempcolor ) elseif ( @colorwarp == 14 ) ftemp = cosh( tempcolor ) elseif ( @colorwarp == 15 ) ftemp = tanh( tempcolor ) elseif ( @colorwarp == 16 ) ftemp = asinh( tempcolor ) elseif ( @colorwarp == 17 ) ftemp = acosh( tempcolor ) elseif ( @colorwarp == 18 ) ftemp = atanh( tempcolor ) elseif ( @colorwarp == 19 ) ftemp = log( 1/tempcolor ) elseif ( @colorwarp == 20 ) ftemp = log( log( tempcolor )) elseif ( @colorwarp == 21 ) ftemp = exp( -tempcolor ) elseif ( @colorwarp == 22 ) ftemp = exp( 1/tempcolor ) elseif ( @colorwarp == 23 ) ftemp = tempcolor^(-tempcolor) elseif ( @colorwarp == 24 ) ftemp = sin( tempcolor ) ftemp = ftemp * ftemp elseif ( @colorwarp == 25 ) ftemp = cos( tempcolor ) ftemp = ftemp * ftemp elseif ( @colorwarp == 26 ) ftemp = tan( tempcolor ) ftemp = ftemp * ftemp elseif ( @colorwarp == 27 ) ftemp = cotan( tempcolor ) elseif ( @colorwarp == 28 ) ftemp = 1/cos( tempcolor ) elseif ( @colorwarp == 29 ) ftemp = 1/sin( tempcolor ) elseif ( @colorwarp == 30 ) ftemp = cotan( tempcolor ) ftemp = ftemp * ftemp elseif ( @colorwarp == 31 ) ftemp = 1/cos( tempcolor ) ftemp = ftemp * ftemp elseif ( @colorwarp == 32 ) ftemp = 1/sin( tempcolor ) ftemp = ftemp * ftemp elseif ( @colorwarp == 33 ) ftemp = tempcolor^(tempcolor) ftemp = tempcolor^ftemp elseif ( @colorwarp == 34 ) ftemp = tempcolor^(tempcolor) ftemp = 1/( tempcolor^ftemp ) elseif ( @colorwarp == 35 ) ftemp = log(-tempcolor) elseif ( @colorwarp == 36 ) ftemp = 1/log( tempcolor ) elseif ( @colorwarp == 37 ) ftemp = tempcolor * log( tempcolor ) elseif ( @colorwarp == 38 ) ftemp = sin( tempcolor ) / tempcolor elseif ( @colorwarp == 39 ) ftemp = cos( tempcolor ) / tempcolor elseif ( @colorwarp == 40 ) ftemp = sin( tempcolor ) * cos( tempcolor ) elseif ( @colorwarp == 41 ) ftemp = sin( tempcolor^2 ) elseif ( @colorwarp == 42 ) ftemp = exp( -1/tempcolor ) elseif ( @colorwarp == 43 ) ftemp = tempcolor * exp( tempcolor ) elseif ( @colorwarp == 44 ) ftemp = tempcolor * exp( -tempcolor ) elseif ( @colorwarp == 45 ) ftemp = tempcolor * exp( 1/tempcolor ) elseif ( @colorwarp == 46 ) ftemp = tempcolor * exp( -1/tempcolor ) elseif ( @colorwarp == 47 ) ftemp = tempcolor * tempcolor * tempcolor elseif ( @colorwarp == 48 ) ftemp = 1 / ( tempcolor * tempcolor * tempcolor ) elseif ( @colorwarp == 49 ) ftemp = atan( 1 / tempcolor ) elseif ( @colorwarp == 50 ) ftemp = acos( 1 / tempcolor ) elseif ( @colorwarp == 51 ) ftemp = asin( 1 / tempcolor ) elseif ( @colorwarp == 52 ) ftemp = tan( tempcolor ) / tempcolor elseif ( @colorwarp == 53 ) ftemp = cotan( tempcolor ) / tempcolor elseif ( @colorwarp == 54 ) ftemp = 1 / ( tempcolor * cos( tempcolor )) elseif ( @colorwarp == 55 ) ftemp = 1 / ( tempcolor * sin( tempcolor )) elseif ( @colorwarp == 56 ) ftemp = tempcolor * sin( tempcolor ) elseif ( @colorwarp == 57 ) ftemp = tempcolor * cos( tempcolor ) elseif ( @colorwarp == 58 ) ftemp = tempcolor * tan( tempcolor ) elseif ( @colorwarp == 59 ) ftemp = tempcolor * cotan( tempcolor ) elseif ( @colorwarp == 60 ) ftemp = tempcolor/cos( tempcolor ) elseif ( @colorwarp == 61 ) ftemp = tempcolor/sin( tempcolor ) elseif ( @colorwarp == 62 ) ftemp = sin( 1/tempcolor ) elseif ( @colorwarp == 63 ) ftemp = cos( 1/tempcolor ) elseif ( @colorwarp == 64 ) ftemp = tan( 1/tempcolor ) elseif ( @colorwarp == 65 ) ftemp = cotan( 1/tempcolor ) elseif ( @colorwarp == 66 ) ftemp = 1/cos( 1/tempcolor ) elseif ( @colorwarp == 67 ) ftemp = 1/sin( 1/tempcolor ) elseif ( @colorwarp == 68 ) ftemp = cotanh( tempcolor ) elseif ( @colorwarp == 69 ) ftemp = 1/cosh( tempcolor ) elseif ( @colorwarp == 70 ) ftemp = 1/sinh( tempcolor ) elseif ( @colorwarp == 71 ) ftemp = atanh( 1/tempcolor ) elseif ( @colorwarp == 72 ) ftemp = acosh( 1/tempcolor ) elseif ( @colorwarp == 73 ) ftemp = asinh( 1/tempcolor ) elseif @colorwarp == 74 ftemp = tempcolor^@cpower elseif @colorwarp == 75 ftemp = sinh(tempcolor) ftemp = ftemp * ftemp elseif @colorwarp == 76 ftemp = cosh( tempcolor ) ftemp = ftemp * ftemp elseif @colorwarp == 77 ftemp = tanh(tempcolor) ftemp = ftemp * ftemp elseif @colorwarp == 78 ftemp = cotanh( tempcolor ) ftemp = ftemp * ftemp elseif @colorwarp == 79 ftemp = 1/cosh(tempcolor) ftemp = ftemp * ftemp elseif @colorwarp == 80 ftemp = 1 / sinh( tempcolor ) ftemp = ftemp * ftemp elseif @colorwarp == 81 ftemp = sinh(1/tempcolor) elseif @colorwarp == 82 ftemp = cosh(1/tempcolor) elseif @colorwarp == 83 ftemp = tanh(1/tempcolor) elseif @colorwarp == 84 ftemp = cotanh(1/tempcolor) elseif @colorwarp == 85 ftemp = 1/cosh(1/tempcolor) elseif @colorwarp == 86 ftemp = 1/sinh(1/tempcolor) elseif @colorwarp == 87 ftemp = sin( tempcolor ) * tan(tempcolor) elseif @colorwarp == 88 ftemp = sinh(tempcolor) * tanh(tempcolor) elseif @colorwarp == 89 ftemp = sinh(tempcolor) * cosh(tempcolor) elseif @colorwarp == 90 ftemp = sinh(tempcolor), ftemp2 = cosh(tempcolor) ftemp = ftemp*ftemp*ftemp2*ftemp2 elseif @colorwarp == 91 ftemp = sin(tempcolor), ftemp2 = cos(tempcolor) ftemp = ftemp*ftemp*ftemp2*ftemp2 elseif @colorwarp == 92 ftemp = 1/tempcolor ftemp = sin(ftemp)*cos(ftemp) elseif @colorwarp == 93 ftemp = sin( 1/tempcolor ) ftemp = ftemp*ftemp elseif @colorwarp == 94 ftemp = sin(tempcolor) * cos(1/tempcolor) elseif @colorwarp == 95 ftemp = sin(tempcolor) * sin(1/tempcolor) elseif @colorwarp == 96 ftemp = log(tempcolor) ftemp = ftemp*ftemp elseif @colorwarp == 97 ftemp = sin(tempcolor) * sin(2*tempcolor) elseif @colorwarp == 98 ftemp = exp(2*tempcolor) elseif @colorwarp == 99 ftemp = exp(-2*tempcolor) elseif @colorwarp == 100 ftemp = 1/tempcolor ftemp = sinh(ftemp)*cosh(ftemp) elseif @colorwarp == 101 ftemp = sinh( 1/tempcolor ) ftemp = ftemp*ftemp elseif @colorwarp == 102 ftemp = sinh(tempcolor) * cosh(1/tempcolor) elseif @colorwarp == 103 ftemp = sinh(tempcolor) * sinh(1/tempcolor) elseif @colorwarp == 104 ftemp = sin(tempcolor) * sinh(tempcolor) elseif @colorwarp == 105 ftemp = sin(tempcolor) * cosh(tempcolor) elseif @colorwarp == 106 ftemp = sin(tempcolor), ftemp2 = sinh(tempcolor) ftemp = ftemp*ftemp*ftemp2*ftemp2 elseif @colorwarp == 107 ftemp = sin(tempcolor)*exp(tempcolor) elseif @colorwarp == 108 ftemp = cos(tempcolor)*exp(tempcolor) elseif @colorwarp == 109 ftemp = sinh(tempcolor)*exp(tempcolor) elseif @colorwarp == 110 ftemp = cosh(tempcolor)*exp(tempcolor) elseif @colorwarp == 111 ftemp = sin(tempcolor)*log(tempcolor) elseif @colorwarp == 112 ftemp = cos(tempcolor)*log(tempcolor) elseif @colorwarp == 113 ftemp = sinh(tempcolor)*log(tempcolor) elseif @colorwarp == 114 ftemp = cosh(tempcolor)*log(tempcolor) elseif @colorwarp == 115 ftemp = exp(tempcolor^2) elseif @colorwarp == 116 ftemp = exp(1/(tempcolor^2)) elseif @colorwarp == 117 ftemp = abs(tempcolor) elseif @colorwarp == 118 ftemp = round(tempcolor) elseif @colorwarp == 119 ftemp = trunc(tempcolor) elseif @colorwarp == 120 ftemp = ceil(tempcolor) elseif @colorwarp == 121 ftemp = floor(tempcolor) elseif @colorwarp == 122 ftemp = tempcolor/log(tempcolor) elseif @colorwarp == 123 ftemp = log(tempcolor)/tempcolor elseif @colorwarp == 124 ftemp = exp(tempcolor)/tempcolor elseif @colorwarp == 125 ftemp = exp(1/tempcolor)/tempcolor elseif @colorwarp == 126 ftemp = exp(tempcolor^2)/tempcolor elseif @colorwarp == 127 ftemp = exp(1/(tempcolor^2))/tempcolor elseif @colorwarp == 128 ftemp = tempcolor * exp(tempcolor^2) elseif @colorwarp == 129 ftemp = tempcolor * exp(1/(tempcolor^2)) elseif @colorwarp == 130 ftemp = exp(-(tempcolor^2)) elseif @colorwarp == 131 ftemp = exp(-1/(tempcolor^2)) elseif @colorwarp == 132 ftemp = exp(-(tempcolor^2))/tempcolor elseif @colorwarp == 133 ftemp = exp(-1/(tempcolor^2))/tempcolor elseif @colorwarp == 134 ftemp = tempcolor * exp(-(tempcolor^2)) else ; @colorwarp == 135 ftemp = tempcolor * exp(-1/(tempcolor^2)) endif ; tempcolorwarp #index = abs(ftemp) endif ; solidset else #solid = TRUE endif ; itrapped default: title = "Trapestry-x" param version caption = "Version" default = 1.02 visible = FALSE endparam heading caption = "Primary Settings" endheading param showprimaries caption = "Show Primary Params?" default = TRUE endparam param whattotrap caption = "Trap What?" enum = "minimum" "maximum" "2nd minimum" "3rd minimum" "4th minimum" "2nd maximum" \ "3rd maximum" "4th maximum" "1st threshold" "last threshold" "threshold count" \ "2nd threshold" "1st limit" "2nd limit" "last limit" "Nth z iterate" "last z" \ "max-min" "max+min" "max*min" "max/min" "max^min" \ "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What size of value will be trapped? 'Threshold' means first iterate value to \ fall below the 'Threshold Value' parameter; 'Limit' means the first iterate to \ exceed the 'Threshold Value'" visible = @showprimaries endparam param nthiterate caption = "Nth Iterate Value" default = 1 hint = "If 'Trap What' is set to 'Nth z iterate', then this is the value \ of 'N', the iteration that z will be trapped" visible = @showprimaries && (@whattotrap == 15) endparam param threshold caption = "Threshold Value" default = 0.5 hint = "Upper bound (maximum value that will be trapped) if one of the \ 'Threshold' options is chosen for param 'Trap What'; \ also, lower bound (minimum trapped value) if 'Trap What' is set to \ a 'Limit' option" visible = ( @whattotrap > 7 ) && ( @whattotrap < 15 ) && @showprimaries endparam param varythresh caption = "Vary Threshold?" default = FALSE hint = "If set, the value of the trap will modify the value of 'threshold' and \ 'limit' type traps each iteration; parameter \ 'ThreshFeedback' can be used to modulate the variation" visible = ( @whattotrap > 7 ) && ( @whattotrap < 15 ) && @showprimaries endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh && ( @whattotrap > 7 ) && ( @whattotrap < 15 ) && @showprimaries endparam param ringstyle caption = "Enable Bands?" default = FALSE hint = "If 'Enable Bands' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then trapping is limited to a narrow \ region near the 'Threshold Value'. \ 'Threshold Value' sets one band radius, and 'Band Width' sets the width \ of the trapping region" visible = ( @whattotrap > 7 ) && ( @whattotrap < 15 ) && @showprimaries endparam param ringwidth caption = "Band Width" default = 0.25 hint = "If 'Enable Bands' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the band trap" visible = @ringstyle && ( @whattotrap > 7 ) && ( @whattotrap < 15 ) && @showprimaries endparam param varyrwidth caption = "Vary Band Width?" default = FALSE hint = "If set, the value of the trap will modify the band width of 'threshold' \ and 'limit' band-type traps each iteration; parameter 'BandFeedback' can be \ used to modulate the variation" visible = @ringstyle && ( @whattotrap > 7 ) && ( @whattotrap < 15 ) && @showprimaries endparam param ringstp caption = "BandFeedback" default = 1.0 hint = "If 'Vary Band Width' is set, this setting adjusts the amount of variation" visible = @varyrwidth && @ringstyle && ( @whattotrap > 7 ) && ( @whattotrap < 15 ) && @showprimaries endparam param trapmode caption = "Trap Flavor" enum = "distance" "magnitude" "real" "imaginary" "trap magnitude" "angle" \ "trap angle" "raw angle" "difference angle" "diff. angle 2" \ "trap real" "trap imaginary" "sum" "product" \ "quotient 1" "quotient 2" "power 1" "power 2" "arith. mean" "geom. mean" \ "angle 2" "angle 3" "angle 4" "angle 5" "angle 6" "angle 7" "angle 8" \ "real 2" "real 3" "real 4" "real 5" "real 6" "real 7" "real 8" \ "imag 2" "imag 3" "imag 4" "imag 5" "imag 6" "imag 7" "imag 8" default = 0 hint = "What variable will be watched for possible trapping?" visible = @showprimaries endparam param @colorby caption = "Color By?" enum = "distance" "mod distance" "magnitude" "mod magnitude" "flavor value" \ "iteration" "angle" "mod angle" "real" "mod real" "imag" "mod imag" \ "trap magnitude" "trap angle" "trap real" "trap imag" "fBm/texture only"\ "modulated iter" default = 0 hint = "Criterion for computing color index; index will be based on the value of this variable" visible = @showprimaries endparam float param ncol caption = "Mod Iter Ranges" default = 4.0 hint = "The number of colors that are displayed before the first is repeated. \ Decimal values are possible for special effects." visible = @colorby == 17 && @showprimaries endparam float param cd caption = "Separation" default = 1.0 hint = "Changes the points in the gradient from \ which the colors for 'Mod Iter' are taken" visible = @colorby == 17 && @showprimaries endparam param overallscale caption = "Overall Scale" default = 4.0 hint = "This parameter fixes the overall size of all traps" visible = @showprimaries endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, previous iterations of z are also used to \ determine the trap. If enabled, it may also be of interest \ to set param 'Iterations to Skip' (in the 'Modifiers' section) \ to a non-zero value. Since the history array \ (containing values of previous z iterates) fills up regardless of the \ setting of 'Iterations to Skip', a non-zero value for 'Iterations to \ Skip' allows the history array to initialize with interesting values \ before trapping begins" visible = @showprimaries endparam param histype caption = "History Type" default = 1 min = 0 max = 324 hint = "Determines how previous z's are used for trapping. Range is \ an integer from 0 (no previous z used) to 324. Range types recur \ in sets of 36" visible = @history && @showprimaries endparam heading caption = "Trap Function Settings" endheading param showtrapfuncs caption = "Show Trap Func Params?" default = TRUE endparam param coordtype caption = "Coordinate Type" enum = "Polar" "Parametric" "Mixed" default = 0 hint = "This setting determines how the trapping functions are interpreted. \ 'Mixed' means that one trap is computed using polar coordinates, and \ the second trap is calculated parametrically" visible = @showtrapfuncs endparam param traptype caption = "Trap Type" enum = "functions" "oscillators" "mixed 1" "mixed 2" default = 0 hint = "This setting determines which function sets are used for the trap. \ 'mixed 1' and 'mixed 2' are equivalent unless 'Coordinate Type' is also \ set to 'Mixed'. In that case, 'mixed 1' means that the first trap \ is computed in polar coords using functions, the second parametrically \ using oscillators; 'mixed 2' means that the polar trap is computed \ using oscillators, while the parametric trap is calculated using \ functions" visible = @showtrapfuncs endparam param trapcombo caption = "Trap Combination" default = 1 enum = "average" "sum" "difference" "product" "geom. mean" "difference 2" \ "quotient" "quotient 2" "exponential 1" "exponential 2" "splice 1" \ "splice 2" "product 2" "quotient 3" "splice 3" "splice 4" "splice 5" \ "splice 6" hint = "This setting determines how the two traps will be merged" visible = @showtrapfuncs && (((@coordtype == "Polar") && (@traptype == "functions") && (@f2scale != 0.0)) || \ ((@coordtype == "Polar") && (@traptype == "oscillators") && (@osc21amp != 0.0)) || \ ((@coordtype == "Polar") && ((@traptype == "mixed 1") || (@traptype == "mixed 2"))) || \ ((@coordtype == "Parametric") && (@traptype == "functions") && ((@f3scale != 0.0) || (@f4scale != 0.0))) || \ ((@coordtype == "Parametric") && (@traptype == "oscillators") && ((@osc31amp != 0.0) || (@osc41amp != 0.0))) || \ ((@coordtype == "Parametric") && ((@traptype == "mixed 1") || (@traptype == "mixed 2"))) || \ @coordtype == "Mixed") endparam param twotrapsblend caption = "Blend the Traps?" default = FALSE hint = "If enabled, then different weights can be assigned to the two trap functions \ that will affect the proportions in which they will be combined by 'Trap \ Combination'. Sometimes convenient so that all the different amplitudes/scales \ don't have to be individually adjusted" visible = @showtrapfuncs && (((@coordtype == "Polar") && (@traptype == "functions") && (@f2scale != 0.0)) || \ ((@coordtype == "Polar") && (@traptype == "oscillators") && (@osc21amp != 0.0)) || \ ((@coordtype == "Polar") && ((@traptype == "mixed 1") || (@traptype == "mixed 2"))) || \ ((@coordtype == "Parametric") && (@traptype == "functions") && ((@f3scale != 0.0) || (@f4scale != 0.0))) || \ ((@coordtype == "Parametric") && (@traptype == "oscillators") && ((@osc31amp != 0.0) || (@osc41amp != 0.0))) || \ ((@coordtype == "Parametric") && ((@traptype == "mixed 1") || (@traptype == "mixed 2"))) || \ @coordtype == "Mixed") endparam param trap1weight caption = "Trap 1 Weight" default = 1.0 hint = "This value sets how much of Trap 1 will be combined by 'Trap Combination' \ if 'Enable Blending' is turned on" visible = @twotrapsblend && @showtrapfuncs && (((@coordtype == "Polar") && (@traptype == "functions") && (@f2scale != 0.0)) || \ ((@coordtype == "Polar") && (@traptype == "oscillators") && (@osc21amp != 0.0)) || \ ((@coordtype == "Polar") && ((@traptype == "mixed 1") || (@traptype == "mixed 2"))) || \ ((@coordtype == "Parametric") && (@traptype == "functions") && ((@f3scale != 0.0) || (@f4scale != 0.0))) || \ ((@coordtype == "Parametric") && (@traptype == "oscillators") && ((@osc31amp != 0.0) || (@osc41amp != 0.0))) || \ ((@coordtype == "Parametric") && ((@traptype == "mixed 1") || (@traptype == "mixed 2"))) || \ @coordtype == "Mixed") endparam param trap2weight caption = "Trap 2 Weight" default = 1.0 hint = "This value sets how much of Trap 2 will be combined by 'Trap Combination' \ if 'Enable Blending' is turned on" visible = @twotrapsblend && @showtrapfuncs && (((@coordtype == "Polar") && (@traptype == "functions") && (@f2scale != 0.0)) || \ ((@coordtype == "Polar") && (@traptype == "oscillators") && (@osc21amp != 0.0)) || \ ((@coordtype == "Polar") && ((@traptype == "mixed 1") || (@traptype == "mixed 2"))) || \ ((@coordtype == "Parametric") && (@traptype == "functions") && ((@f3scale != 0.0) || (@f4scale != 0.0))) || \ ((@coordtype == "Parametric") && (@traptype == "oscillators") && ((@osc31amp != 0.0) || (@osc41amp != 0.0))) || \ ((@coordtype == "Parametric") && ((@traptype == "mixed 1") || (@traptype == "mixed 2"))) || \ @coordtype == "Mixed") endparam param func1 caption = "Function 1" enum = "a" "1/a" "a^2" "1/a^2" "log(a)" \ "e^a" "a^a" "sin(a)" "cos(a)" "tan(a)" \ "arcsin(a)" "arccos(a)" "arctan(a)" "sinh(a)" "cosh(a)" \ "tanh(a)" "arcsinh(a)" "arccosh(a)" "arctanh(a)" "log(1/a)" \ "log(log(a))" "e^(1/a)" "sin(a)^n" "cos(a)^n" "tan(a)^n" \ "cot(a)" "sec(a)" "csc(a)" "cot(a)^n" "sec(a)^n" \ "csc(a)^n" "a^a^a" "1/(a^a^a)" "1/log(a)" \ "a*log(a)" \ "sin(a)/a" "cos(a)/a" "sin(a)*cos(a)" "sin(a^n)" \ "a*e^a" \ "a*e^(1/a)" "arccot(a)" "arcsec(a)" "arccsc(a)" "tan(a)/a" \ "cot(a)/a" "sec(a)/a" "csc(a)/a" "a*sin(a)" \ "a*cos(a)" \ "a*tan(a)" "a*cot(a)" "a*sec(a)" "a*csc(a)" \ "sin(1/a)" \ "cos(1/a)" "tan(1/a)" "cot(1/a)" "sec(1/a)" "csc(1/a)" \ "cotanh(a)" "sech(a)" "cosech(a)" "arccoth(a)" "arcsech(a)" \ "arccosech(a)" "a^n" "sinh(a)^n" "cosh(a)^n" "tanh(a)^n" \ "cotanh(a)^n" "sech(a)^n" "cosech(a)^n" "sinh(1/a)" "cosh(1/a)" \ "tanh(1/a)" "cotanh(1/a)" "sech(1/a)" "cosech(1/a)" \ "sin(a)tan(a)" \ "sinh(a)tanh(a)" "sinh(a)cosh(a)" "sinh(a)^n*cosh(a)^n" \ "sin(a)^n*cos(a)^n" "sin(1/a)*cos(1/a)" \ "sin(1/a)^n" "sin(a)cos(1/a)" "sin(a)sin(1/a)" \ "log(a)^n" "sin(n*a)sin(m*a)" \ "sinh(1/a)cosh(1/a)" "sinh(1/a)^n" "sinh(a)cosh(1/a)" \ "sinh(a)sinh(1/a)" "sin(a)sinh(a)" \ "sin(a)cosh(a)" "sin(a)^n*sinh(a)^n" "sin(a)e^a" \ "cos(a)e^a" "sinh(a)e^a" \ "cosh(a)e^a" "sin(a)log(a)" "cos(a)log(a)" \ "sinh(a)log(a)" "cosh(a)log(a)" \ "e^(a^n)" "e^(1/(a^n))" "abs(a)" "round(a)" \ "trunc(a)" \ "ceil(a)" "floor(a)" "bifolium" "cardioid" "circle" \ "cissoid of Diocles" "cochleoid" "companion to cycloid (x)" \ "companion to cycloid (y)" "conchoid of Nicomedes" \ "cycloid 1 (x)" "cycloid 1 (y)" "cycloid 2 (x)" "cycloid 2 (y)" \ "curtate cycloid (x)" \ "curtate cycloid (y)" "ellipse (x)" "ellipse (y)" "epicycloid (x)" \ "epicycloid (y)" \ "evolute of ellipse (x)" "evolute of ellipse (y)" \ "folium of Descartes" "hyperbola (x)" "hyperbola (y)" \ "involute (x)" "involute (y)" "lemniscate of Bernoulli" \ "limacon of Pascal" "lituus" \ "nephroid (x)" "nephroid (y)" "parabola" "rose" \ "semicubical parabola" \ "serpentine (x)" "serpentine (y)" "spiral of Archimedes" \ "hyperbolic spiral" "logarithmic spiral" \ "parabolic spiral" "strophoid" "tractrix (x)" \ "tractrix (y)" "witch of Agnesi (x)" \ "witch of Agnesi (y)" "cubical parabola" "lissajous (x)" \ "lissajous (y)" "hypocycloid (x)" \ "hypocycloid (y)" "circle 2" "conchoid 2" "conchoid of de Sluze" \ "ellipse 2" \ "folium of Descartes 2 (x)" "folium of Descartes 2 (y)" \ "kampyle of Eudoxus" "kappa curve" "wavy circle (x)" \ "wavy circle (y)" "a/log(a)" "log(a)/a" "(e^a)/a" "(e^(1/a))/a" \ "(e^(a^n))/a" "(e^(1/(a^n))/a" "a*e^(a^n)" "a*e^(1/(a^n))" default = 143 hint = "If 'Trap Type' is set to 'functions', 'mixed 1', or 'mixed 2', then \ this parameter sets the first function. The 'a' function argument \ represents the angle of the iterate, z. An '(x)' or '(y)' indicates \ that that equation is designed for parametric use, but obviously \ can be used as a polar function as well, with unpredictable results. \ If 'Coordinate Type' is 'Polar', this function calculates the first radius; \ if 'Parametric', this function computes the x-coord of the first (x,y) pair. \ For the 'Mixed/mixed 1' and 'Mixed/functions' combos, it calculates \ the radius; for the 'Mixed/mixed 2' combo, an x-coordinate" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) \ && (@f1scale != 0) endparam param f1scale caption = "Func1 Scale" default = 1.0 hint = "This parameter can be used to selectively adjust the scale of the \ first function" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) endparam param f1offset caption = "Func1 Offset" default = 0.0 hint = "This value is added to the unscaled result of the 'Function 1' calculation" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) \ && (@f1scale != 0) endparam param const1f1 caption = "1st Func1 Constant" default = 3.0 hint = "In the function formulas, this parameter usually modifies the \ innermost function, or expression of highest precedence. Affects the shape \ of the trap" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) && \ ((@func1 > 3) && (@func1 != 107)) \ && (@f1scale != 0) endparam param const2f1 caption = "2nd Func1 Constant" default = 1.0 hint = "In the function formulas, this parameter, if present, usually \ modifies an expression of lower precedence, but is often an exponent \ if one is needed. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) && \ ( (@func1 == 20) || ((@func1 >= 22) && (@func1 <= 24)) || ((@func1 >= 28) && (@func1 <= 32)) \ || (@func1 == 37) || ((@func1 >= 67) && (@func1 <= 72)) || ((@func1 >= 79) && (@func1 <= 106)) \ || (@func1 == 38) || ((@func1 >= 112) && (@func1 <= 113)) || (@func1 == 115) || \ ((@func1 >= 118) && (@func1 <= 129)) || ((@func1 >= 132) && (@func1 <= 136)) || (@func1 == 138) \ || ((@func1 >= 140) && (@func1 <= 142)) || (@func1 == 144) || (@func1 == 146) || \ ((@func1 >= 150) && (@func1 <= 152)) || ((@func1 >= 155) && (@func1 <= 167)) || \ ((@func1 >= 169) && (@func1 <= 170)) || ((@func1 >= 175) && (@func1 <= 178)) ) \ && (@f1scale != 0) endparam param const3f1 caption = "3rd Func1 Constant" default = 1.0 hint = "If three constants are needed in a function formulas, this parameter \ sets the third one. Its use varies. In 'ellipse 2' this is the \ exponent. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) && \ ( ((@func1 >= 82) && (@func1 <= 83)) || (@func1 == 96) || ((@func1 >=124) && (@func1 <= 125)) \ || ((@func1 >= 128) && (@func1 <= 129)) || ((@func1 >= 135) && (@func1 <= 136)) || (@func1 == 132) \ || (@func1 == 138) || ((@func1 >= 140) && (@func1 <= 142)) || \ (@func1 == 146) || ((@func1 >= 159) && (@func1 <= 160)) || \ ((@func1 >= 162) && (@func1 <= 166)) || ((@func1 >= 169) && (@func1 <= 170)) ) \ && (@f1scale != 0) endparam param f1absangle caption = "Func1 Abs Argument" default = FALSE hint = "If enabled, then the absolute value of the angle is used as the function \ argument, rather than the raw angle. Normally without affect unless the angle \ has been modified by 'Offset Angle', 'Spread Angle', or 'Screwiness Type'" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) \ && (@f1scale != 0) endparam param f1absresult caption = "Func1 Abs Result" default = FALSE hint = "If enabled, then the absolute value of the function result is used to \ compute the trap point, rather than the raw result" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) \ && (@f1scale != 0) endparam param func2 caption = "Function 2" enum = "a" "1/a" "a^2" "1/a^2" "log(a)" \ "e^a" "a^a" "sin(a)" "cos(a)" "tan(a)" \ "arcsin(a)" "arccos(a)" "arctan(a)" "sinh(a)" "cosh(a)" \ "tanh(a)" "arcsinh(a)" "arccosh(a)" "arctanh(a)" "log(1/a)" \ "log(log(a))" "e^(1/a)" "sin(a)^n" "cos(a)^n" "tan(a)^n" \ "cot(a)" "sec(a)" "csc(a)" "cot(a)^n" "sec(a)^n" \ "csc(a)^n" "a^a^a" "1/(a^a^a)" "1/log(a)" \ "a*log(a)" \ "sin(a)/a" "cos(a)/a" "sin(a)*cos(a)" "sin(a^n)" \ "a*e^a" \ "a*e^(1/a)" "arccot(a)" "arcsec(a)" "arccsc(a)" "tan(a)/a" \ "cot(a)/a" "sec(a)/a" "csc(a)/a" "a*sin(a)" \ "a*cos(a)" \ "a*tan(a)" "a*cot(a)" "a*sec(a)" "a*csc(a)" \ "sin(1/a)" \ "cos(1/a)" "tan(1/a)" "cot(1/a)" "sec(1/a)" "csc(1/a)" \ "cotanh(a)" "sech(a)" "cosech(a)" "arccoth(a)" "arcsech(a)" \ "arccosech(a)" "a^n" "sinh(a)^n" "cosh(a)^n" "tanh(a)^n" \ "cotanh(a)^n" "sech(a)^n" "cosech(a)^n" "sinh(1/a)" "cosh(1/a)" \ "tanh(1/a)" "cotanh(1/a)" "sech(1/a)" "cosech(1/a)" \ "sin(a)tan(a)" \ "sinh(a)tanh(a)" "sinh(a)cosh(a)" "sinh(a)^n*cosh(a)^n" \ "sin(a)^n*cos(a)^n" "sin(1/a)*cos(1/a)" \ "sin(1/a)^n" "sin(a)cos(1/a)" "sin(a)sin(1/a)" \ "log(a)^n" "sin(n*a)sin(m*a)" \ "sinh(1/a)cosh(1/a)" "sinh(1/a)^n" "sinh(a)cosh(1/a)" \ "sinh(a)sinh(1/a)" "sin(a)sinh(a)" \ "sin(a)cosh(a)" "sin(a)^n*sinh(a)^n" "sin(a)e^a" \ "cos(a)e^a" "sinh(a)e^a" \ "cosh(a)e^a" "sin(a)log(a)" "cos(a)log(a)" \ "sinh(a)log(a)" "cosh(a)log(a)" \ "e^(a^n)" "e^(1/(a^n))" "abs(a)" "round(a)" \ "trunc(a)" \ "ceil(a)" "floor(a)" "bifolium" "cardioid" "circle" \ "cissoid of Diocles" "cochleoid" "companion to cycloid (x)" \ "companion to cycloid (y)" "conchoid of Nicomedes" \ "cycloid 1 (x)" "cycloid 1 (y)" "cycloid 2 (x)" "cycloid 2 (y)" \ "curtate cycloid (x)" \ "curtate cycloid (y)" "ellipse (x)" "ellipse (y)" "epicycloid (x)" \ "epicycloid (y)" \ "evolute of ellipse (x)" "evolute of ellipse (y)" \ "folium of Descartes" "hyperbola (x)" "hyperbola (y)" \ "involute (x)" "involute (y)" "lemniscate of Bernoulli" \ "limacon of Pascal" "lituus" \ "nephroid (x)" "nephroid (y)" "parabola" "rose" \ "semicubical parabola" \ "serpentine (x)" "serpentine (y)" "spiral of Archimedes" \ "hyperbolic spiral" "logarithmic spiral" \ "parabolic spiral" "strophoid" "tractrix (x)" \ "tractrix (y)" "witch of Agnesi (x)" \ "witch of Agnesi (y)" "cubical parabola" "lissajous (x)" \ "lissajous (y)" "hypocycloid (x)" \ "hypocycloid (y)" "circle 2" "conchoid 2" "conchoid of de Sluze" \ "ellipse 2" \ "folium of Descartes 2 (x)" "folium of Descartes 2 (y)" \ "kampyle of Eudoxus" "kappa curve" "wavy circle (x)" \ "wavy circle (y)" "a/log(a)" "log(a)/a" "(e^a)/a" "(e^(1/a))/a" \ "(e^(a^n))/a" "(e^(1/(a^n))/a" "a*e^(a^n)" "a*e^(1/(a^n))" default = 0 hint = "This parameter sets the second function; to inactivate it, \ set 'Func2 Scale' to zero. For the active combinations, \ this function calculates: 'Polar/functions', the second radius; \ 'Parametric/anything', the first y-coordinate; 'Mixed/functions', \ the x-coordinate; and 'Mixed/mixed 2', the y-coordinate" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) && @f2scale != 0.0 endparam param f2scale caption = "Func2 Scale" default = 0.0 hint = "This parameter can be used to selectively adjust the scale of the \ second function, or to turn it off by setting the value to zero" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) endparam param f2offset caption = "Func2 Offset" default = 0.0 hint = "This value is added to the unscaled result of the 'Function 2' calculation" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) && @f2scale != 0.0 endparam param const1f2 caption = "1st Func2 Constant" default = 1.0 hint = "In the function formulas, this parameter usually modifies the \ innermost function, or expression of highest precedence. Affects \ the shape of the trap" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) && \ ((@func2 > 3) && (@func2 != 107)) \ && (@f2scale != 0) endparam param const2f2 caption = "2nd Func2 Constant" default = 1.0 hint = "In the function formulas, this parameter, if present, usually \ modifies an expression of lower precedence, but is often an exponent \ if one is needed. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) && \ ( (@func2 == 20) || ((@func2 >= 22) && (@func2 <= 24)) || ((@func2 >= 28) && (@func2 <= 32)) \ || (@func2 == 37) || ((@func2 >= 67) && (@func2 <= 72)) || ((@func2 >= 79) && (@func2 <= 106)) \ || (@func2 == 38) || ((@func2 >= 112) && (@func2 <= 113)) || (@func2 == 115) || \ ((@func2 >= 118) && (@func2 <= 129)) || ((@func2 >= 132) && (@func2 <= 136)) || (@func2 == 138) \ || ((@func2 >= 140) && (@func2 <= 142)) || (@func2 == 144) || (@func2 == 146) || \ ((@func2 >= 150) && (@func2 <= 152)) || ((@func2 >= 155) && (@func2 <= 167)) || \ ((@func2 >= 169) && (@func2 <= 170)) || ((@func2 >= 175) && (@func2 <= 178)) ) \ && (@f2scale != 0) endparam param const3f2 caption = "3rd Func2 Constant" default = 1.0 hint = "If three constants are needed in a function formulas, this parameter \ sets the third one. Its use varies. In 'ellipse 2' this is the \ exponent. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) && \ ( ((@func2 >= 82) && (@func2 <= 83)) || (@func2 == 96) || ((@func2 >=124) && (@func2 <= 125)) \ || ((@func2 >= 128) && (@func2 <= 129)) || ((@func2 >= 135) && (@func2 <= 136)) || (@func2 == 132) \ || (@func2 == 138) || ((@func2 >= 140) && (@func2 <= 142)) || \ (@func2 == 146) || ((@func2 >= 159) && (@func2 <= 160)) || \ ((@func2 >= 162) && (@func2 <= 166)) || ((@func2 >= 169) && (@func2 <= 170)) ) \ && (@f2scale != 0) endparam param f2absangle caption = "Func2 Abs Argument" default = FALSE hint = "If enabled, then the absolute value of the angle is used as the function \ argument, rather than the raw angle. Normally without affect unless the angle \ has been modified by 'Offset Angle', 'Spread Angle', or 'Screwiness Type'" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) && @f2scale != 0.0 endparam param f2absresult caption = "Func2 Abs Result" default = FALSE hint = "If enabled, then the absolute value of the function result is used to \ compute the trap point, rather than the raw result" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) && @f2scale != 0.0 endparam param func3 caption = "Function 3" enum = "a" "1/a" "a^2" "1/a^2" "log(a)" \ "e^a" "a^a" "sin(a)" "cos(a)" "tan(a)" \ "arcsin(a)" "arccos(a)" "arctan(a)" "sinh(a)" "cosh(a)" \ "tanh(a)" "arcsinh(a)" "arccosh(a)" "arctanh(a)" "log(1/a)" \ "log(log(a))" "e^(1/a)" "sin(a)^n" "cos(a)^n" "tan(a)^n" \ "cot(a)" "sec(a)" "csc(a)" "cot(a)^n" "sec(a)^n" \ "csc(a)^n" "a^a^a" "1/(a^a^a)" "1/log(a)" \ "a*log(a)" \ "sin(a)/a" "cos(a)/a" "sin(a)*cos(a)" "sin(a^n)" \ "a*e^a" \ "a*e^(1/a)" "arccot(a)" "arcsec(a)" "arccsc(a)" "tan(a)/a" \ "cot(a)/a" "sec(a)/a" "csc(a)/a" "a*sin(a)" \ "a*cos(a)" \ "a*tan(a)" "a*cot(a)" "a*sec(a)" "a*csc(a)" \ "sin(1/a)" \ "cos(1/a)" "tan(1/a)" "cot(1/a)" "sec(1/a)" "csc(1/a)" \ "cotanh(a)" "sech(a)" "cosech(a)" "arccoth(a)" "arcsech(a)" \ "arccosech(a)" "a^n" "sinh(a)^n" "cosh(a)^n" "tanh(a)^n" \ "cotanh(a)^n" "sech(a)^n" "cosech(a)^n" "sinh(1/a)" "cosh(1/a)" \ "tanh(1/a)" "cotanh(1/a)" "sech(1/a)" "cosech(1/a)" \ "sin(a)tan(a)" \ "sinh(a)tanh(a)" "sinh(a)cosh(a)" "sinh(a)^n*cosh(a)^n" \ "sin(a)^n*cos(a)^n" "sin(1/a)*cos(1/a)" \ "sin(1/a)^n" "sin(a)cos(1/a)" "sin(a)sin(1/a)" \ "log(a)^n" "sin(n*a)sin(m*a)" \ "sinh(1/a)cosh(1/a)" "sinh(1/a)^n" "sinh(a)cosh(1/a)" \ "sinh(a)sinh(1/a)" "sin(a)sinh(a)" \ "sin(a)cosh(a)" "sin(a)^n*sinh(a)^n" "sin(a)e^a" \ "cos(a)e^a" "sinh(a)e^a" \ "cosh(a)e^a" "sin(a)log(a)" "cos(a)log(a)" \ "sinh(a)log(a)" "cosh(a)log(a)" \ "e^(a^n)" "e^(1/(a^n))" "abs(a)" "round(a)" \ "trunc(a)" \ "ceil(a)" "floor(a)" "bifolium" "cardioid" "circle" \ "cissoid of Diocles" "cochleoid" "companion to cycloid (x)" \ "companion to cycloid (y)" "conchoid of Nicomedes" \ "cycloid 1 (x)" "cycloid 1 (y)" "cycloid 2 (x)" "cycloid 2 (y)" \ "curtate cycloid (x)" \ "curtate cycloid (y)" "ellipse (x)" "ellipse (y)" "epicycloid (x)" \ "epicycloid (y)" \ "evolute of ellipse (x)" "evolute of ellipse (y)" \ "folium of Descartes" "hyperbola (x)" "hyperbola (y)" \ "involute (x)" "involute (y)" "lemniscate of Bernoulli" \ "limacon of Pascal" "lituus" \ "nephroid (x)" "nephroid (y)" "parabola" "rose" \ "semicubical parabola" \ "serpentine (x)" "serpentine (y)" "spiral of Archimedes" \ "hyperbolic spiral" "logarithmic spiral" \ "parabolic spiral" "strophoid" "tractrix (x)" \ "tractrix (y)" "witch of Agnesi (x)" \ "witch of Agnesi (y)" "cubical parabola" "lissajous (x)" \ "lissajous (y)" "hypocycloid (x)" \ "hypocycloid (y)" "circle 2" "conchoid 2" "conchoid of de Sluze" \ "ellipse 2" \ "folium of Descartes 2 (x)" "folium of Descartes 2 (y)" \ "kampyle of Eudoxus" "kappa curve" "wavy circle (x)" \ "wavy circle (y)" "a/log(a)" "log(a)/a" "(e^a)/a" "(e^(1/a))/a" \ "(e^(a^n))/a" "(e^(1/(a^n))/a" "a*e^(a^n)" "a*e^(1/(a^n))" default = 0 hint = "This parameter sets the third function; to inactivate it, \ set 'Func3 Scale' to zero. For the active combinations, \ this function calculates: 'Parametric/functions', the second \ x-coordinate; 'Mixed/functions', \ the y-coordinate" visible = @showtrapfuncs && \ (((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) ) && @f3scale != 0.0 endparam param f3scale caption = "Func3 Scale" default = 0.0 hint = "This parameter can be used to selectively adjust the scale of the \ third function, or to turn it off by setting the value to zero" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) endparam param f3offset caption = "Func3 Offset" default = 0.0 hint = "This value is added to the unscaled result of the 'Function 3' calculation" visible = @showtrapfuncs && \ (((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) ) && @f3scale != 0.0 endparam param const1f3 caption = "1st Func3 Constant" default = 1.0 hint = "In the function formulas, this parameter usually modifies the \ innermost function, or expression of highest precedence. Affects \ the shape of the trap" visible = @showtrapfuncs && \ (((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) ) && \ ((@func3 > 3) && (@func3 != 107)) \ && (@f3scale != 0.0) endparam param const2f3 caption = "2nd Func3 Constant" default = 1.0 hint = "In the function formulas, this parameter, if present, usually \ modifies an expression of lower precedence, but is often an exponent \ if one is needed. Affects the shape of the trap" visible = @showtrapfuncs && \ (((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) ) && \ ( (@func3 == 20) || ((@func3 >= 22) && (@func3 <= 24)) || ((@func3 >= 28) && (@func3 <= 32)) \ || (@func3 == 37) || ((@func3 >= 67) && (@func3 <= 72)) || ((@func3 >= 79) && (@func3 <= 106)) \ || (@func3 == 38) || ((@func3 >= 112) && (@func3 <= 113)) || (@func3 == 115) || \ ((@func3 >= 118) && (@func3 <= 129)) || ((@func3 >= 132) && (@func3 <= 136)) || (@func3 == 138) \ || ((@func3 >= 140) && (@func3 <= 142)) || (@func3 == 144) || (@func3 == 146) || \ ((@func3 >= 150) && (@func3 <= 152)) || ((@func3 >= 155) && (@func3 <= 167)) || \ ((@func3 >= 169) && (@func3 <= 170)) || ((@func3 >= 175) && (@func3 <= 178)) ) \ && (@f3scale != 0) endparam param const3f3 caption = "3rd Func3 Constant" default = 1.0 hint = "If three constants are needed in a function formulas, this parameter \ sets the third one. Its use varies. In 'ellipse 2' this is the \ exponent. Affects the shape of the trap" visible = @showtrapfuncs && \ (((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) ) && \ ( ((@func3 >= 82) && (@func3 <= 83)) || (@func3 == 96) || ((@func3 >=124) && (@func3 <= 125)) \ || ((@func3 >= 128) && (@func3 <= 129)) || ((@func3 >= 135) && (@func3 <= 136)) || (@func3 == 132) \ || (@func3 == 138) || ((@func3 >= 140) && (@func3 <= 142)) || \ (@func3 == 146) || ((@func3 >= 159) && (@func3 <= 160)) || \ ((@func3 >= 162) && (@func3 <= 166)) || ((@func3 >= 169) && (@func3 <= 170)) ) \ && (@f3scale != 0) endparam param f3absangle caption = "Func3 Abs Argument" default = FALSE hint = "If enabled, then the absolute value of the angle is used as the function \ argument, rather than the raw angle. Normally without affect unless the angle \ has been modified by 'Offset Angle', 'Spread Angle', or 'Screwiness Type'" visible = @showtrapfuncs && \ (((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) ) && @f3scale != 0.0 endparam param f3absresult caption = "Func3 Abs Result" default = FALSE hint = "If enabled, then the absolute value of the function result is used to \ compute the trap point, rather than the raw result" visible = @showtrapfuncs && \ (((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) ) && @f3scale != 0.0 endparam param func4 caption = "Function 4" enum = "a" "1/a" "a^2" "1/a^2" "log(a)" \ "e^a" "a^a" "sin(a)" "cos(a)" "tan(a)" \ "arcsin(a)" "arccos(a)" "arctan(a)" "sinh(a)" "cosh(a)" \ "tanh(a)" "arcsinh(a)" "arccosh(a)" "arctanh(a)" "log(1/a)" \ "log(log(a))" "e^(1/a)" "sin(a)^n" "cos(a)^n" "tan(a)^n" \ "cot(a)" "sec(a)" "csc(a)" "cot(a)^n" "sec(a)^n" \ "csc(a)^n" "a^a^a" "1/(a^a^a)" "1/log(a)" \ "a*log(a)" \ "sin(a)/a" "cos(a)/a" "sin(a)*cos(a)" "sin(a^n)" \ "a*e^a" \ "a*e^(1/a)" "arccot(a)" "arcsec(a)" "arccsc(a)" "tan(a)/a" \ "cot(a)/a" "sec(a)/a" "csc(a)/a" "a*sin(a)" \ "a*cos(a)" \ "a*tan(a)" "a*cot(a)" "a*sec(a)" "a*csc(a)" \ "sin(1/a)" \ "cos(1/a)" "tan(1/a)" "cot(1/a)" "sec(1/a)" "csc(1/a)" \ "cotanh(a)" "sech(a)" "cosech(a)" "arccoth(a)" "arcsech(a)" \ "arccosech(a)" "a^n" "sinh(a)^n" "cosh(a)^n" "tanh(a)^n" \ "cotanh(a)^n" "sech(a)^n" "cosech(a)^n" "sinh(1/a)" "cosh(1/a)" \ "tanh(1/a)" "cotanh(1/a)" "sech(1/a)" "cosech(1/a)" \ "sin(a)tan(a)" \ "sinh(a)tanh(a)" "sinh(a)cosh(a)" "sinh(a)^n*cosh(a)^n" \ "sin(a)^n*cos(a)^n" "sin(1/a)*cos(1/a)" \ "sin(1/a)^n" "sin(a)cos(1/a)" "sin(a)sin(1/a)" \ "log(a)^n" "sin(n*a)sin(m*a)" \ "sinh(1/a)cosh(1/a)" "sinh(1/a)^n" "sinh(a)cosh(1/a)" \ "sinh(a)sinh(1/a)" "sin(a)sinh(a)" \ "sin(a)cosh(a)" "sin(a)^n*sinh(a)^n" "sin(a)e^a" \ "cos(a)e^a" "sinh(a)e^a" \ "cosh(a)e^a" "sin(a)log(a)" "cos(a)log(a)" \ "sinh(a)log(a)" "cosh(a)log(a)" \ "e^(a^n)" "e^(1/(a^n))" "abs(a)" "round(a)" \ "trunc(a)" \ "ceil(a)" "floor(a)" "bifolium" "cardioid" "circle" \ "cissoid of Diocles" "cochleoid" "companion to cycloid (x)" \ "companion to cycloid (y)" "conchoid of Nicomedes" \ "cycloid 1 (x)" "cycloid 1 (y)" "cycloid 2 (x)" "cycloid 2 (y)" \ "curtate cycloid (x)" \ "curtate cycloid (y)" "ellipse (x)" "ellipse (y)" "epicycloid (x)" \ "epicycloid (y)" \ "evolute of ellipse (x)" "evolute of ellipse (y)" \ "folium of Descartes" "hyperbola (x)" "hyperbola (y)" \ "involute (x)" "involute (y)" "lemniscate of Bernoulli" \ "limacon of Pascal" "lituus" \ "nephroid (x)" "nephroid (y)" "parabola" "rose" \ "semicubical parabola" \ "serpentine (x)" "serpentine (y)" "spiral of Archimedes" \ "hyperbolic spiral" "logarithmic spiral" \ "parabolic spiral" "strophoid" "tractrix (x)" \ "tractrix (y)" "witch of Agnesi (x)" \ "witch of Agnesi (y)" "cubical parabola" "lissajous (x)" \ "lissajous (y)" "hypocycloid (x)" \ "hypocycloid (y)" "circle 2" "conchoid 2" "conchoid of de Sluze" \ "ellipse 2" \ "folium of Descartes 2 (x)" "folium of Descartes 2 (y)" \ "kampyle of Eudoxus" "kappa curve" "wavy circle (x)" \ "wavy circle (y)" "a/log(a)" "log(a)/a" "(e^a)/a" "(e^(1/a))/a" \ "(e^(a^n))/a" "(e^(1/(a^n))/a" "a*e^(a^n)" "a*e^(1/(a^n))" default = 0 hint = "This parameter sets the fourth function; to inactivate it, \ set 'Func4 Scale' to zero. For the active combination, \ 'Parametric/functions', this function calculates the second \ y-coordinate" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) \ && @f4scale != 0.0 endparam param f4scale caption = "Func4 Scale" default = 0.0 hint = "This parameter can be used to selectively adjust the scale of the \ fourth function, or to turn it off by setting the value to zero" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) endparam param f4offset caption = "Func4 Offset" default = 0.0 hint = "This value is added to the unscaled result of the 'Function 4' calculation" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) \ && @f4scale != 0.0 endparam param const1f4 caption = "1st Func4 Constant" default = 1.0 hint = "In the function formulas, this parameter usually modifies the \ innermost function, or expression of highest precedence. Affects \ the shape of the trap" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) && \ ((@func4 > 3) && (@func4 != 107)) \ && (@f4scale != 0) endparam param const2f4 caption = "2nd Func4 Constant" default = 1.0 hint = "In the function formulas, this parameter, if present, usually \ modifies an expression of lower precedence, but is often an exponent \ if one is needed. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) && \ ( (@func4 == 20) || ((@func4 >= 22) && (@func4 <= 24)) || ((@func4 >= 28) && (@func4 <= 32)) \ || (@func4 == 37) || ((@func4 >= 67) && (@func4 <= 72)) || ((@func4 >= 79) && (@func4 <= 106)) \ || (@func4 == 38) || ((@func4 >= 112) && (@func4 <= 113)) || (@func4 == 115) || \ ((@func4 >= 118) && (@func4 <= 129)) || ((@func4 >= 132) && (@func4 <= 136)) || (@func4 == 138) \ || ((@func4 >= 140) && (@func4 <= 142)) || (@func4 == 144) || (@func4 == 146) || \ ((@func4 >= 150) && (@func4 <= 152)) || ((@func4 >= 155) && (@func4 <= 167)) || \ ((@func4 >= 169) && (@func4 <= 170)) || ((@func4 >= 175) && (@func4 <= 178)) ) \ && (@f4scale != 0) endparam param const3f4 caption = "3rd Func4 Constant" default = 1.0 hint = "If three constants are needed in a function formulas, this parameter \ sets the third one. Its use varies. In 'ellipse 2' this is the \ exponent. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) && \ ( ((@func4 >= 82) && (@func4 <= 83)) || (@func4 == 96) || ((@func4 >=124) && (@func4 <= 125)) \ || ((@func4 >= 128) && (@func4 <= 129)) || ((@func4 >= 135) && (@func4 <= 136)) || (@func4 == 132) \ || (@func4 == 138) || ((@func4 >= 140) && (@func4 <= 142)) || \ (@func4 == 146) || ((@func4 >= 159) && (@func4 <= 160)) || \ ((@func4 >= 162) && (@func4 <= 166)) || ((@func4 >= 169) && (@func4 <= 170)) ) \ && (@f4scale != 0) endparam param f4absangle caption = "Func4 Abs Argument" default = FALSE hint = "If enabled, then the absolute value of the angle is used as the function \ argument, rather than the raw angle. Normally without affect unless the angle \ has been modified by 'Offset Angle', 'Spread Angle', or 'Screwiness Type'" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) \ && @f4scale != 0.0 endparam param f4absresult caption = "Func4 Abs Result" default = FALSE hint = "If enabled, then the absolute value of the function result is used to \ compute the trap point, rather than the raw result" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) \ && @f4scale != 0.0 endparam param osc11amp caption = "SetA Osc1 Amplitude" default = 4.0 hint = "If the first oscillator set (Set A) is active, then this \ value is the amplitude of Set A's first oscillator. \ Osc Set A can be disabled by setting the amplitude of its first \ oscillator to zero. In the active \ combinations, Set A is used to compute the following: \ 'Polar/oscillators', the first radius; 'Polar/mixed1' and \ 'Polar/mixed 2', the second radius; 'Parametric/oscillator', the first \ x-ccordinate; 'Parametric/mixed 1' and 'Parametric/mixed 2', the second \ x-coord; 'Mixed/oscillator' and 'Mixed/mixed 2', the radius; and \ 'Mixed/mixed 1', the x-coord" visible = @showtrapfuncs && \ (@traptype != "functions") endparam param osc11freq caption = "SetA Osc1 Frequency" default = 1.0 hint = "If the first oscillator set (Set A) is active, then this \ value is the frequency of Set A's first oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") && \ (@osc11amp != 0.0) endparam param osc11sin caption = "SetA Osc1 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set A's first oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) endparam param osc12amp caption = "SetA Osc2 Amplitude" default = 1.0 hint = "If the first oscillator set (Set A) is active, then this \ value is the amplitude of Set A's second oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") && \ (@osc11amp != 0.0) endparam param osc12freq caption = "SetA Osc2 Frequency" default = 4.0 hint = "If the first oscillator set (Set A) is active, then this \ value is the frequency of Set A's second oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") && \ (@osc11amp != 0.0) && (@osc12amp != 0.0) endparam param osc12sin caption = "SetA Osc2 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set A's second oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) endparam param osc13amp caption = "SetA Osc3 Amplitude" default = 0.0 hint = "If the first oscillator set (Set A) is active, then this \ value is the amplitude of Set A's third oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") && \ (@osc11amp != 0.0) && (@osc12amp != 0.0) endparam param osc13freq caption = "SetA Osc3 Frequency" default = 1.0 hint = "If the first oscillator set (Set A) is active, then this \ value is the frequency of Set A's third oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") && \ (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) endparam param osc13sin caption = "SetA Osc3 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set A's third oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) endparam param osc14amp caption = "SetA Osc4 Amplitude" default = 0.0 hint = "If the first oscillator set (Set A) is active, then this \ value is the amplitude of Set A's fourth oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") && \ (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) endparam param osc14freq caption = "SetA Osc4 Frequency" default = 1.0 hint = "If the first oscillator set (Set A) is active, then this \ value is the frequency of Set A's fourth oscillator." visible = @showtrapfuncs && \ (@traptype != "functions") && \ (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) && (@osc14amp != 0.0) endparam param osc14sin caption = "SetA Osc4 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set A's fourth oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) && (@osc14amp != 0.0) endparam param o1offset caption = "Osc SetA Offset" default = 0.0 hint = "This value is added to the unscaled result of the oscillator set A \ calculation" visible = @showtrapfuncs && \ (@traptype != "functions") \ && @osc11amp != 0.0 endparam param o1absangle caption = "OscA Abs Argument" default = FALSE hint = "If enabled, then the absolute value of the angle is used as the oscillator \ set A argument, rather than the raw angle. Normally without affect unless the angle \ has been modified by 'Offset Angle', 'Spread Angle', or 'Screwiness Type'" visible = @showtrapfuncs && \ (@traptype != "functions") \ && @osc11amp != 0.0 endparam param o1absresult caption = "OscA Abs Result" default = FALSE hint = "If enabled, then the absolute value of the oscillator result is used to \ compute the trap point, rather than the raw result" visible = @showtrapfuncs && \ (@traptype != "functions") \ && @osc11amp != 0.0 endparam param osc21amp caption = "SetB Osc1 Amplitude" default = 4.0 hint = "If the second oscillator set (Set B) is active, then this \ value is the amplitude of Set B's first oscillator. \ Osc Set B can be disabled by setting the amplitude of its first \ oscillator to zero. In the active \ combinations, Set B is used to compute the following: \ 'Polar/oscillators', the second radius; 'Parametric/oscillator', the first \ y-ccordinate; 'Parametric/mixed 1' and 'Parametric/mixed 2', the second \ y-coord; 'Mixed/oscillator', the x-coord; and \ 'Mixed/mixed 1', the y-coord" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) endparam param osc21freq caption = "SetB Osc1 Frequency" default = 1.0 hint = "If the second oscillator set (Set B) is active, then this \ value is the frequency of Set B's first oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) && \ (@osc21amp != 0.0) endparam param osc21sin caption = "SetB Osc1 Sine?" default = TRUE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set B's first oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && (@osc21amp != 0.0) endparam param osc22amp caption = "SetB Osc2 Amplitude" default = -1.0 hint = "If the second oscillator set (Set B) is active, then this \ value is the amplitude of Set B's second oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) && \ (@osc21amp != 0.0) endparam param osc22freq caption = "SetB Osc2 Frequency" default = 4.0 hint = "If the second oscillator set (Set B) is active, then this \ value is the frequency of Set B's second oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) && \ (@osc21amp != 0.0) && (@osc22amp != 0.0) endparam param osc22sin caption = "SetB Osc2 Sine?" default = TRUE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set B's second oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && (@osc21amp != 0.0) && (@osc22amp != 0.0) endparam param osc23amp caption = "SetB Osc3 Amplitude" default = 0.0 hint = "If the second oscillator set (Set B) is active, then this \ value is the amplitude of Set B's third oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) && \ (@osc21amp != 0.0) && (@osc22amp != 0.0) endparam param osc23freq caption = "SetB Osc3 Frequency" default = 1.0 hint = "If the second oscillator set (Set B) is active, then this \ value is the frequency of Set B's third oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) && \ (@osc21amp != 0.0) && (@osc22amp != 0.0) && (@osc23amp != 0.0) endparam param osc23sin caption = "SetB Osc3 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set B's third oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && (@osc21amp != 0.0) && (@osc22amp != 0.0) && (@osc23amp != 0.0) endparam param osc24amp caption = "SetB Osc4 Amplitude" default = 0.0 hint = "If the second oscillator set (Set B) is active, then this \ value is the amplitude of Set B's fourth oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) && \ (@osc21amp != 0.0) && (@osc22amp != 0.0) && (@osc23amp != 0.0) endparam param osc24freq caption = "SetB Osc4 Frequency" default = 1.0 hint = "If the second oscillator set (Set B) is active, then this \ value is the frequency of Set B's fourth oscillator." visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) && \ (@osc21amp != 0.0) && (@osc22amp != 0.0) && (@osc23amp != 0.0) && (@osc24amp != 0.0) endparam param osc24sin caption = "SetB Osc4 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set B's fourth oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && (@osc21amp != 0.0) && (@osc22amp != 0.0) && (@osc23amp != 0.0) && (@osc24amp != 0.0) endparam param o2offset caption = "Osc SetB Offset" default = 0.0 hint = "This value is added to the unscaled result of the oscillator set B \ calculation" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && @osc21amp != 0.0 endparam param o2absangle caption = "OscB Abs Argument" default = FALSE hint = "If enabled, then the absolute value of the angle is used as the oscillator \ set A argument, rather than the raw angle. Normally without affect unless the angle \ has been modified by 'Offset Angle', 'Spread Angle', or 'Screwiness Type'" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && @osc21amp != 0.0 endparam param o2absresult caption = "OscB Abs Result" default = FALSE hint = "If enabled, then the absolute value of the oscillator result is used to \ compute the trap point, rather than the raw result" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && @osc21amp != 0.0 endparam param osc31amp caption = "SetC Osc1 Amplitude" default = 1.0 hint = "If the third oscillator set (Set C) is active, then this \ value is the amplitude of Set C's first oscillator. \ Osc Set C can be disabled by setting the amplitude of its first \ oscillator to zero. In the active \ combinations, Set C is used to compute the following: \ 'Parametric/oscillator', the second \ x-ccordinate; 'Mixed/oscillator', the y-coord" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) endparam param osc31freq caption = "SetC Osc1 Frequency" default = 1.0 hint = "If the third oscillator set (Set C) is active, then this \ value is the frequency of Set C's first oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) && \ (@osc31amp != 0.0) endparam param osc31sin caption = "SetC Osc1 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set C's first oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) endparam param osc32amp caption = "SetC Osc2 Amplitude" default = 0.0 hint = "If the third oscillator set (Set C) is active, then this \ value is the amplitude of Set C's second oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) && \ (@osc31amp != 0.0) endparam param osc32freq caption = "SetC Osc2 Frequency" default = 1.0 hint = "If the third oscillator set (Set C) is active, then this \ value is the frequency of Set C's second oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) && \ (@osc31amp != 0.0) && (@osc32amp != 0.0) endparam param osc32sin caption = "SetC Osc2 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set C's second oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) endparam param osc33amp caption = "SetC Osc3 Amplitude" default = 0.0 hint = "If the third oscillator set (Set C) is active, then this \ value is the amplitude of Set C's third oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) && \ (@osc31amp != 0.0) && (@osc32amp != 0.0) endparam param osc33freq caption = "SetC Osc3 Frequency" default = 1.0 hint = "If the third oscillator set (Set C) is active, then this \ value is the frequency of Set C's third oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) && \ (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) endparam param osc33sin caption = "SetC Osc3 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set C's third oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) endparam param osc34amp caption = "SetC Osc4 Amplitude" default = 0.0 hint = "If the third oscillator set (Set C) is active, then this \ value is the amplitude of Set C's fourth oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) && \ (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) endparam param osc34freq caption = "SetC Osc4 Frequency" default = 1.0 hint = "If the third oscillator set (Set C) is active, then this \ value is the frequency of Set C's fourth oscillator." visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) && \ (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) && (@osc34amp != 0.0) endparam param osc34sin caption = "SetC Osc4 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set C's fourth oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) && (@osc34amp != 0.0) endparam param o3offset caption = "Osc SetC Offset" default = 0.0 hint = "This value is added to the unscaled result of the oscillator set C \ calculation" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) endparam param o3absangle caption = "OscC Abs Argument" default = FALSE hint = "If enabled, then the absolute value of the angle is used as the oscillator \ set A argument, rather than the raw angle. Normally without affect unless the angle \ has been modified by 'Offset Angle', 'Spread Angle', or 'Screwiness Type'" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) endparam param o3absresult caption = "OscC Abs Result" default = FALSE hint = "If enabled, then the absolute value of the oscillator result is used to \ compute the trap point, rather than the raw result" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) endparam param osc41amp caption = "SetD Osc1 Amplitude" default = 1.0 hint = "If the fourth oscillator set (Set D) is active, then this \ value is the amplitude of Set D's first oscillator. \ Osc Set D can be disabled by setting the amplitude of its first \ oscillator to zero. In the active \ combination, Set D is used to compute the following: \ 'Parametric/oscillator', the second \ y-ccordinate" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) endparam param osc41freq caption = "SetD Osc1 Frequency" default = 1.0 hint = "If the fourth oscillator set (Set D) is active, then this \ value is the frequency of Set D's first oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) && \ (@osc41amp != 0.0) endparam param osc41sin caption = "SetD Osc1 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set D's first oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) endparam param osc42amp caption = "SetD Osc2 Amplitude" default = 0.0 hint = "If the fourth oscillator set (Set D) is active, then this \ value is the amplitude of Set D's second oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) && \ (@osc41amp != 0.0) endparam param osc42freq caption = "SetD Osc2 Frequency" default = 1.0 hint = "If the fourth oscillator set (Set D) is active, then this \ value is the frequency of Set D's second oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) && \ (@osc41amp != 0.0) && (@osc42amp != 0.0) endparam param osc42sin caption = "SetD Osc2 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set D's second oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) endparam param osc43amp caption = "SetD Osc3 Amplitude" default = 0.0 hint = "If the fourth oscillator set (Set D) is active, then this \ value is the amplitude of Set D's third oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) && \ (@osc41amp != 0.0) && (@osc42amp != 0.0) endparam param osc43freq caption = "SetD Osc3 Frequency" default = 1.0 hint = "If the fourth oscillator set (Set D) is active, then this \ value is the frequency of Set D's third oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) && \ (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) endparam param osc43sin caption = "SetD Osc3 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set D's third oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) endparam param osc44amp caption = "SetD Osc4 Amplitude" default = 0.0 hint = "If the fourth oscillator set (Set D) is active, then this \ value is the amplitude of Set D's fourth oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) && \ (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) endparam param osc44freq caption = "SetD Osc4 Frequency" default = 1.0 hint = "If the fourth oscillator set (Set D) is active, then this \ value is the frequency of Set D's fourth oscillator." visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) && \ (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) && (@osc44amp != 0.0) endparam param osc44sin caption = "SetD Osc4 Sine?" default = FALSE hint = "If enabled, then the sine function, rather than cosine, is used \ for Set D's fourth oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) && (@osc44amp != 0.0) endparam param o4offset caption = "Osc SetD Offset" default = 0.0 hint = "This value is added to the unscaled result of the oscillator set D \ calculation" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) endparam param o4absangle caption = "OscD Abs Argument" default = FALSE hint = "If enabled, then the absolute value of the angle is used as the oscillator \ set A argument, rather than the raw angle. Normally without affect unless the angle \ has been modified by 'Offset Angle', 'Spread Angle', or 'Screwiness Type'" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) endparam param o4absresult caption = "OscD Abs Result" default = FALSE hint = "If enabled, then the absolute value of the oscillator result is used to \ compute the trap point, rather than the raw result" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) endparam heading caption = "Trap Positional Settings" endheading param @showpositionals caption = "Show Positional Params?" default = FALSE endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap siae each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" visible = @showpositionals endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale && @showpositionals endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.98 max = 359.98 hint = "Number of degrees (0-359) that the trap should be rotated from its default position" visible = @showpositionals endparam param varyrotation caption = "Vary Rotation?" default = FALSE hint = "If set, the value of the trap will modify the trap rotation each iteration; \ parameter 'RotationFeedback' can be used to modulate the variation" visible = @showpositionals endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation && @showpositionals endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of trap center" visible = @showpositionals endparam param varycenter caption = "Vary Center?" default = FALSE hint = "If set, the value of the trap will modify the trap center each iteration; \ parameter 'CenterFeedback' can be used to modulate the variation. Only active \ if initial trap center is NOT (0,0)" visible = @showpositionals endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter && @showpositionals endparam param offsetangle caption = "Offset Angle?" default = FALSE hint = "If enabled, a constant angle can be added to the value of \ atan(z); set param 'AngleOffset Amount' to fix the increment. \ The increment is added before any adjustment by 'Spread Angle'" visible = @showpositionals endparam param offsetfactor caption = "AngleOffset Amount" default = -3.1415926536 hint = "If param 'Offset Angle?' is enabled, this is the increment \ added to atan(z). The angle is given in radians. \ Inactive if 'Spread Angle?' is not enabled. \ The increment is added before any adjustment by 'Spread Angle'" visible = @offsetangle && @showpositionals endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range of z is stretched out or compressed, \ depending on the value of param 'AngleSpread Factor'. Active after \ 'Offset Angle'" visible = @showpositionals endparam param sprangfactor caption = "AngleSpread Factor" default = 3.0 hint = "If param 'Spread Angle?' is enabled, this is the stretching or \ compression multiplier of atan(z). 1.0 corresponds to no spreading. \ Inactive if 'Spread Angle?' is not enabled" visible = @sprangle && @showpositionals endparam heading caption = "Color Settings" endheading param showcolors caption = "Show Color Params?" default = FALSE endparam param softendistance caption = "Soften Distance?" default = FALSE hint = "If enabled, coloring by distance is modified to smear out distances that \ fall very close to the trap. The effect can be adjusted with the two \ parameters 'Soft Distance' and 'Soft Exponent'" visible = @showcolors && ( (@colorby == 0) || (@colorby == 1) ) endparam param softdistamt caption = "Soft Distance" default = 0.05 min = 1e-10 hint = "If 'Soften Distance' is enabled, this value fixes the minimum distance \ at which the effect is active. Useful values are generally very small. \ The larger the value, the greater the smearing" visible = @showcolors && @softendistance && ( (@colorby == 0) || (@colorby == 1) ) endparam param softdistpwr caption = "Soft Exponent" default = 0.5 min = 1e-10 hint = "If 'Soften Distance' is enabled, this exponent sets the rate that the \ gradient changes as distance from the trap increases. For slower fading, \ decrease this value" visible = @showcolors && @softendistance && ( (@colorby == 0) || (@colorby == 1) ) endparam param softaccel caption = "Soft Acceleration" default = 1.0 hint = "If 'Soften Distance' is enabled, this factor sets the rate that the \ 'Soft Exponent' grows as distance from the trap increases. For slower fading, \ decrease this value" visible = @showcolors && @softendistance && ( (@colorby == 0) || (@colorby == 1) ) endparam param maxsoften caption = "Maxima Smoothing" default = 0.05 min = 1.0e-10 hint = "This parameter smoothes out the coloring when one of the maxima \ 'Trap What' values are chosen. Smaller is smoother" visible = @showcolors && ( (@whattotrap == 1) || (@whattotrap == 5) || \ (@whattotrap == 6) || (@whattotrap == 7) || (@whattotrap > 15) ) && \ ( (@colorby != 4) && (@colorby != 5) && (@colorby != 6) && \ (@colorby != 7) && (@colorby < 12) ) endparam param ranges caption = "Color Ranges" default = 1 min = 1 hint = "Applies different parts of the color palette to various portions of \ the image" visible = @showcolors endparam param maskranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Mask What Range?' and 'Mask Range If' can be \ set to mask the appropriate pixels. Only valid if 'Color Ranges' > 1" visible = (@ranges > 1) && @showcolors endparam param whatrange caption = "Mask What Range?" enum = "<=" ">=" "=" "not =" "between" "outside" default = 0 hint = "If 'Mask Color Ranges?' is turned on, then pixels falling in this color \ range will be visible; others will be set to the solid color" visible = @maskranges && @showcolors && (@ranges > 1) endparam param rangemin caption = "Range Value/Minimum" default = 1 min = 1 hint = "This is the range value that will be affected. If two limits are \ required, then this value is the lower (minimum) one. Use '1' for \ the first range" visible = @maskranges && @showcolors && (@ranges > 1) endparam param rangemax caption = "Range Maximum" default = 2 min = 1 hint = "When two limits are required, this is the higher (maximum) range value \ that will be affected" visible = @maskranges && @showcolors && (@ranges > 1) && ((@whatrange == 4) || (@whatrange == 5)) endparam param @colorwarp caption = "Color Warp Factor" enum = "c" "1/c" "c^2" "1/c^2" "log(c)" "e^c" "c^c" "sin(c)" "cos(c)" \ "tan(c)" "asin(c)" "acos(c)" "atan(c)" "sinh(c)" "cosh(c)" "tanh(c)" \ "asinh(c)" "acosh(c)" "atanh(c)" "log(1/c)" "log(log(c))" "e^-c" \ "e^(1/c)" "c^-c" "sin(c)^2" "cos(c)^2" "tan(c)^2" "cot(c)" "sec(c)" \ "csc(c)" "cot(c)^2" "sec(c)^2" "csc(c)^2" "c^c^c" "1/c^c^c" "log(-c)" \ "1/log(c)" "clog(c)" "sin(c)/c" "cos(c)/c" "sin(c)*cos(c)" "sin(c^2)" \ "e^(-1/c)" "ce^c" "ce^-c" "ce^(1/c)" "ce^(-1/c)" "c^3" "1/c^3" \ "acot(c)" "asec(c)" "acsc(c)" "tan(c)/c" "cot(c)/c" "sec(c)/c" \ "csc(c)/c" "csin(c)" "ccos(c)" "ctan(c)" "ccot(c)" "csec(c)" "ccsc(c)" \ "sin(1/c)" "cos(1/c)" "tan(1/c)" "cot(1/c)" "sec(1/c)" "csc(1/c)" \ "cotanh(c)" "sech(c)" "cosech(c)" "acoth(c)" "asech(c)" "acosech(c)" "c^power" \ "sinh(c)^2" "cosh(c)^2" "tanh(c)^2" "cotanh(c)^2" \ "sech(c)^2" "cosech(c)^2" "sinh(1/c)" "cosh(1/c)" "tanh(1/c)" \ "cotanh(1/c)" "sech(1/c)" "cosech(1/c)" "sin(c)tan(c)" "sinh(c)tanh(c)" \ "sinh(c)cosh(c)" "sinh(c)^2*cosh(c)^2" "sin(c)^2*cos(c)^2" \ "sin(1/c)*cos(1/c)" "sin(1/c)^2" "sin(c)cos(1/c)" "sin(c)sin(1/c)" \ "log(c)^2" "sin(c)sin(2c)" "e^2c" "e^-2c" "sinh(1/c)cosh(1/c)" \ "sinh(1/c)^2" "sinh(c)cosh(1/c)" "sinh(c)sinh(1/c)" "sin(c)sinh(c)" \ "sin(c)cosh(c)" "sin(c)^2*sinh(c)^2" "sin(c)e^c" "cos(c)e^c" \ "sinh(c)e^c" "cosh(c)e^c" "sin(c)log(c)" "cos(c)log(c)" "sinh(c)log(c)" \ "cosh(c)log(c)" \ "e^(c^2)" "e^(1/(c^2))" "abs(c)" "round(c)" "trunc(c)" \ "ceil(c)" "floor(c)" "c/log(c)" "log(c)/c" "(e^c)/c" "(e^(1/c))/c" \ "(e^(c^2))/c" "(e^(1/(c^2))/c" "c*e^(c^2)" "c*e^(1/(c^2))" \ "e^(-c^2)" "e^(-1/(c^2))" "(e^(-c^2))/c" "(e^(-1/(c^2))/c" \ "c*e^(-c^2)" "c*e^(1/(-c^2))" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" visible = @showcolors endparam param cpower caption = "Color Power" default = 0.25 hint = "Color index exponent if param 'Color Warp Factor' is set to 'c^power'" visible = (@colorwarp == "c^power") && @showcolors endparam heading caption = "Mask Settings" endheading param showmasks caption = "Show Mask Params?" default = FALSE endparam param maskcombo caption = "Mask Combination Mode" enum = "or" "and" "not" "eor" "nor" "nand" "neor" "Aor!B" default = 0 hint = "If both Mask A and Mask B are enabled, then they will be combined \ as specified by this setting. The default, 'or', corresponds to \ completely independent masks" visible = @maskA && @maskB && @showmasks endparam param maskA caption = "Enable Mask A?" default = FALSE hint = "If enabled, pixels can be masked depending upon the values \ of parameters 'Mask What(A)?' and 'Mask If(A)?' \ Masked pixels will be colored the solid color" visible = @showmasks endparam param maskwhatA caption = "Mask What (A)?" enum = "distance" "mod distance" "magnitude" "mod magnitude" "flavor value" \ "iteration" "angle" "mod angle" "real" "mod real" "imag" "mod imag" \ "trap magnitude" "trap angle" "trap real" "trap imag" "difference angle" \ "diff. angle 2" "sum" "product" "quotient 1" "quotient 2" "power 1" \ "power 2" "arith. mean" "geom. mean" default = 0 hint = "If 'Enable Mask A' is active, then this param determines what type of \ value is checked to determine masking; the range of values that will be \ masked is set by param 'Mask If (A)'" visible = @showmasks && @maskA endparam param maskifA caption = "Mask If (A)?" enum = "falls above" "falls below" "falls between" "falls outside" "equals" "not equal" default = 0 hint = "If 'Enable Mask A' is active, then this param sets the range of \ values that will be masked; the type of value is set be param \ 'Mask What (A)'" visible = @showmasks && @maskA endparam param maskAmin caption = "Mask A Threshold" default = 0.1 hint = "If 'Enable Mask A' is active, then this param sets the threshold \ for masking. If two values are needed, then this is the lower value \ for masking" visible = @showmasks && @maskA endparam param maskAmax caption = "Mask A Maximum" default = 1.0 hint = "If 'Enable Mask A' is active and 'Mask If (A)' is set to \ 'falls between' or 'falls below', then this param sets the upper value \ for masking" visible = @showmasks && @maskA && ( (@maskifA == 2) || (@maskifA == 3) ) endparam param maskAmod caption = "Mask A Modifiers?" default = FALSE hint = "If enabled, then the masking test is modified to more closely \ track the 'Color By' test values. This setting doesn't affect \ every choice of 'Mask What': the angle, flavor value, and \ real & imag options are made to work like 'Color By', and the \ sum, product, quotient, etc. options are made to work like 'Trap Flavor' \ when option 'Modify Flavor Value' is enabled. Generally, this option \ uses absolute values" visible = @showmasks && @maskA endparam param maskB caption = "Enable Mask B?" default = FALSE hint = "If enabled, pixels can be masked depending upon the values \ of parameters 'Mask What(B)?' and 'Mask If(B)?' \ Masked pixels will be colored the solid color" visible = @showmasks endparam param maskwhatB caption = "Mask What (B)?" enum = "distance" "mod distance" "magnitude" "mod magnitude" "flavor value" \ "iteration" "angle" "mod angle" "real" "mod real" "imag" "mod imag" \ "trap magnitude" "trap angle" "trap real" "trap imag" "difference angle" \ "diff. angle 2" "sum" "product" "quotient 1" "quotient 2" "power 1" \ "power 2" "arith. mean" "geom. mean" default = 2 hint = "If 'Enable Mask B' is active, then this param determines what type of \ value is checked to determine masking; the range of values that will be \ masked is set by param 'Mask If (B)'" visible = @showmasks && @maskB endparam param maskifB caption = "Mask If (B)?" enum = "falls above" "falls below" "falls between" "falls outside" "equals" "not equal" default = 0 hint = "If 'Enable Mask B' is active, then this param sets the range of \ values that will be masked; the type of value is set be param \ 'Mask What (B)'" visible = @showmasks && @maskB endparam param maskBmin caption = "Mask B Threshold" default = 1.0 hint = "If 'Enable Mask B' is active, then this param sets the threshold \ for masking. If two values are needed, then this is the lower value \ for masking" visible = @showmasks && @maskB endparam param maskBmax caption = "Mask B Maximum" default = 1.0 hint = "If 'Enable Mask B' is active and 'Mask If (B)' is set to \ 'falls between' or 'falls below', then this param sets the upper value \ for masking" visible = @showmasks && @maskB && ( (@maskifB == 2) || (@maskifB == 3) ) endparam param maskBmod caption = "Mask B Modifiers?" default = FALSE hint = "If enabled, then the masking test is modified to more closely \ track the 'Color By' test values. This setting doesn't affect \ every choice of 'Mask What': the angle, flavor value, and \ real & imag options are made to work like 'Color By', and the \ sum, product, quotient, etc. options are made to work like 'Trap Flavor' \ when option 'Modify Flavor Value' is enabled. Generally, this option \ uses absolute values" visible = @showmasks && @maskB endparam heading caption = "Modifiers" endheading param showmodifiers caption = "Show Modifiers?" default = FALSE endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations. Filling the 'History' array ignores this setting, \ so if 'History' is enabled, try a non-zero value here to have the \ array fill with previous gnerations of z before trapping begins" visible = @showmodifiers endparam param towatch caption = "Iterations to Watch" default = 0 min = 0 hint = "How many iterations should the orbit be monitored for potential trapping? \ '0' means watch all iterations" visible = @showmodifiers endparam param trapvariant caption = "Z Variants" enum = "Normal" "Flip" "Conjugate" "FlipConjugate" "Negate" "Negate Flip" \ "Negate Conjugate" "Conjugate Flip" default = 0 hint = "Enables alternative coloring algorithms based on manipulation of \ real(z) and imag(z) before trapping" visible = @showmodifiers endparam param varytraptype caption = "Trap Variants" enum = "Normal" "Flip" "Conjugate" "FlipConjugate" "Negate" "Negate Flip" \ "Negate Conjugate" "Conjugate Flip" default = 0 hint = "Enables alternative coloring algorithms based on manipulation of \ real(trap) and imag(trap) before testing" visible = @showmodifiers endparam param operator caption = "Enable Operator?" enum = "none" "multiply" "add" "subtract" "divide" "exponentiate" \ "subtraction2" "division2" "exponential2" "logarithm" "logarithm2" default = 0 hint = "If enabled, z is multiplied by (added to, etc) this constant on each iteration \ before testing; parameter 'Operator Constant' sets the constant \ value that is used in the operation" visible = @showmodifiers endparam param operatee caption = "Operation Constant" default = (-1, 1) hint = "If 'Enable Operator' is set, this is the constant used in the \ multiplication/addition/subtraction/division/exponentiation/logarithm" visible = (@operator != "none") && @showmodifiers endparam param swaporder caption = "Swap Order?" default = FALSE hint = "Swaps order of 'Trap Variants' and 'Enable Operator'. Normally, \ the trap variation is executed AFTER the arithmetic operation; this \ param toggles the execution order" visible = ( @trapvariant != "normal" ) && ( @operator != "none" ) && @showmodifiers endparam param twavy caption = "Enable T Waviness?" default = FALSE hint = "Adds waves to the trap function. If enabled, params 'Waviness Mode', \ 'Waviness Amplitude', & 'Waviness Frequency' may be adjusted to vary \ wave character" visible = @showmodifiers endparam param twavmode caption = "T Wave Mode" enum = "radial" "tangential" default = 0 hint = "If 'Enable T Waviness' is on, this param sets the type of waves \ superposed on the trap function; inactive otherwise" visible = @twavy && @showmodifiers endparam param twavamp caption = "T Wave Amplitude" default = 0.1 hint = "If 'Enable T Waviness' is on, this param sets the height of the waves \ superposed on the trap function; inactive otherwise" visible = @twavy && @showmodifiers endparam param twavfreq caption = "T Wave Frequency" default = 10.0 hint = "If 'Enable T Waviness' is on, this param sets the density of waves \ superposed on the trap function; inactive otherwise" visible = @twavy && @showmodifiers endparam param screwmode caption = "Screwiness Type" enum = "none" "AR" "AI" "R" "I" "A+R" "A+I" "R-A" "I-A" "ARI" default = 0 hint = "If enabled, parts of real(z) or imag(z) are combined with atan(z) \ before input to the trap routines" visible = @showmodifiers endparam param absolutelyscrewy caption = "Absolutely Screwy?" default = FALSE hint = "If 'Screwiness Type' is active, then this alters the screwiness value" visible = @showmodifiers && (@screwmode != 0) endparam param modflavor caption = "Modify Flavor Param?" default = FALSE hint = "If enabled, initialized z, rather than raw #z, is used for some \ testing purposes; does not affect 'Flavor' modes 5-12 ('trap magnitude' \ through 'trap imaginary')" visible = @showmodifiers endparam ; param pointmode ; caption = "Enable Point Mode?" ; default = FALSE ; hint = "If set, trapping occurs normally until the first #a has been \ ; trapped using the usual criteria; subsequently, trapping is \ ; relative to this first trap point, rather than to the entire curve" ; visible = @showmodifiers ; endparam param varymode caption = "Feedback Mode" enum = "trapped" "not trapped" "always" default = 2 hint = "Variation style; variation of individual parameters must still \ be enabled. 'trapped' -- feedback occurs only on iterations where some \ value was trapped; 'not trapped' -- varies on iterations when nothing \ trapped; 'always' -- feedback on every iteation" visible = @showmodifiers && \ (@varyfBm || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter) endparam heading caption = "fBm Settings" endheading param showfbm caption = "Show fBm Params?" default = FALSE endparam param fBm caption = "Enable fBm?" default = FALSE hint = "Adds fBm distortion to coloring; overall amount of turbulence \ is set by parameter 'fBm Amount'" visible = @showfbm endparam param fBmamount caption = "fBm Amount" default = 1.0 hint = "Overall degree of fBm texturing, if enabled" visible = @fBm && @showfbm endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of the fBm turbulence" visible = @fBm && @showfbm endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @fBm && @showfbm endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "Scale step size for fBm noise iterations" visible = @fBm && @showfbm endparam param banglestep caption = "fBm Rotation Step" default = 37.0 hint = "The angle in degrees for noise function rotation after \ each fBm iteration; used if 'Turbulence 3' is enabled" visible = @fBm && @showfbm endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @fBm && @showfbm endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomiaation" visible = @fBm && @showfbm endparam param fbminit caption = "fBm Initialization" enum = "z" "mod z" "trap" default = 0 hint = "This setting defines the input to the fBm algorithm" visible = @fBm && @showfbm endparam param varyfBm caption = "Vary fBm?" default = FALSE hint = "If set, the value of the trap will modify the turbulence amount each \ iteration; parameter 'TurbulenceFeedback' can be used to modulate the variation" visible = @fBm && @showfbm endparam param fBmstp caption = "fBm Feedback" default = 1.0 hint = "If 'Vary fBm' is set, this setting adjusts the amount of variation" visible = @varyfBm && @fBm && @showfbm endparam heading caption = "Texture Settings" endheading param showtex caption = "Show Texture Settings?" default = FALSE endparam param texture caption = "Enable Texture?" default = FALSE hint = "If enabled, up to four texture function scan be specified" visible = @showtex endparam param texfunc1 caption = "Texture Func 1" enum = "x" "1/x" "x^2" "1/x^2" "log(x)" "e^x" "x^x" "sin(x)" "cos(x)" \ "tan(x)" "asin(x)" "acos(x)" "atan(x)" "sinh(x)" "cosh(x)" "tanh(x)" \ "asinh(x)" "acosh(x)" "atanh(x)" "log(1/x)" "log(log(x))" "e^-x" \ "e^(1/x)" "x^-x" "sin(x)^2" "cos(x)^2" "tan(x)^2" "cot(x)" "sec(x)" \ "csc(x)" "cot(x)^2" "sec(x)^2" "csc(x)^2" "x^x^x" "1/x^x^x" "log(-x)" \ "1/log(x)" "xlog(x)" "sin(x)/x" "cos(x)/x" "sin(x)*cos(x)" "sin(x^2)" \ "e^(-1/x)" "xe^x" "xe^-x" "xe^(1/x)" "xe^(-1/x)" "x^3" "1/x^3" \ "acot(x)" "asec(x)" "acsc(x)" "tan(x)/x" "cot(x)/x" "sec(x)/x" \ "csc(x)/x" "xsin(x)" "xcos(x)" "xtan(x)" "xcot(x)" "xsec(x)" "xcsc(x)" \ "sin(1/x)" "cos(1/x)" "tan(1/x)" "cot(1/x)" "sec(1/x)" "csc(1/x)" \ "cotanh(x)" "sech(x)" "cosech(x)" "acoth(x)" "asech(x)" "acosech(x)" "x^power" \ "sinh(x)^2" "cosh(x)^2" "tanh(x)^2" "cotanh(x)^2" \ "sech(x)^2" "cosech(x)^2" "sinh(1/x)" "cosh(1/x)" "tanh(1/x)" \ "cotanh(1/x)" "sech(1/x)" "cosech(1/x)" "sin(x)tan(x)" "sinh(x)tanh(x)" \ "sinh(x)cosh(x)" "sinh(x)^2*cosh(x)^2" "sin(x)^2*cos(x)^2" \ "sin(1/x)*cos(1/x)" "sin(1/x)^2" "sin(x)cos(1/x)" "sin(x)sin(1/x)" \ "log(x)^2" "sin(x)sin(2x)" "e^2x" "e^-2x" "sinh(1/x)cosh(1/x)" \ "sinh(1/x)^2" "sinh(x)cosh(1/x)" "sinh(x)sinh(1/x)" "sin(x)sinh(x)" \ "sin(x)cosh(x)" "sin(x)^2*sinh(x)^2" "sin(x)e^x" "cos(x)e^x" \ "sinh(x)e^x" "cosh(x)e^x" "sin(x)log(x)" "cos(x)log(x)" "sinh(x)log(x)" \ "cosh(x)log(x)" \ "e^(x^2)" "e^(1/(x^2))" "abs(x)" "round(x)" "trunc(x)" \ "ceil(x)" "floor(x)" "x/log(x)" "log(x)/x" "(e^x)/x" "(e^(1/x))/x" \ "(e^(x^2))/x" "(e^(1/(x^2))/x" "x*e^(x^2)" "x*e^(1/(x^2))" \ "e^(-x^2)" "e^(-1/(x^2))" "(e^(-x^2))/x" "(e^(-1/(x^2))/x" \ "x*e^(-x^2)" "x*e^(-1/(x^2))" default = 37 hint = "This is the first of four texture functions" visible = @showtex && @texture endparam param texfunc2 caption = "Texture Func 2" enum = "x" "1/x" "x^2" "1/x^2" "log(x)" "e^x" "x^x" "sin(x)" "cos(x)" \ "tan(x)" "asin(x)" "acos(x)" "atan(x)" "sinh(x)" "cosh(x)" "tanh(x)" \ "asinh(x)" "acosh(x)" "atanh(x)" "log(1/x)" "log(log(x))" "e^-x" \ "e^(1/x)" "x^-x" "sin(x)^2" "cos(x)^2" "tan(x)^2" "cot(x)" "sec(x)" \ "csc(x)" "cot(x)^2" "sec(x)^2" "csc(x)^2" "x^x^x" "1/x^x^x" "log(-x)" \ "1/log(x)" "xlog(x)" "sin(x)/x" "cos(x)/x" "sin(x)*cos(x)" "sin(x^2)" \ "e^(-1/x)" "xe^x" "xe^-x" "xe^(1/x)" "xe^(-1/x)" "x^3" "1/x^3" \ "acot(x)" "asec(x)" "acsc(x)" "tan(x)/x" "cot(x)/x" "sec(x)/x" \ "csc(x)/x" "xsin(x)" "xcos(x)" "xtan(x)" "xcot(x)" "xsec(x)" "xcsc(x)" \ "sin(1/x)" "cos(1/x)" "tan(1/x)" "cot(1/x)" "sec(1/x)" "csc(1/x)" \ "cotanh(x)" "sech(x)" "cosech(x)" "acoth(x)" "asech(x)" "acosech(x)" "x^power" \ "sinh(x)^2" "cosh(x)^2" "tanh(x)^2" "cotanh(x)^2" \ "sech(x)^2" "cosech(x)^2" "sinh(1/x)" "cosh(1/x)" "tanh(1/x)" \ "cotanh(1/x)" "sech(1/x)" "cosech(1/x)" "sin(x)tan(x)" "sinh(x)tanh(x)" \ "sinh(x)cosh(x)" "sinh(x)^2*cosh(x)^2" "sin(x)^2*cos(x)^2" \ "sin(1/x)*cos(1/x)" "sin(1/x)^2" "sin(x)cos(1/x)" "sin(x)sin(1/x)" \ "log(x)^2" "sin(x)sin(2x)" "e^2x" "e^-2x" "sinh(1/x)cosh(1/x)" \ "sinh(1/x)^2" "sinh(x)cosh(1/x)" "sinh(x)sinh(1/x)" "sin(x)sinh(x)" \ "sin(x)cosh(x)" "sin(x)^2*sinh(x)^2" "sin(x)e^x" "cos(x)e^x" \ "sinh(x)e^x" "cosh(x)e^x" "sin(x)log(x)" "cos(x)log(x)" "sinh(x)log(x)" \ "cosh(x)log(x)" \ "e^(x^2)" "e^(1/(x^2))" "abs(x)" "round(x)" "trunc(x)" \ "ceil(x)" "floor(x)" "x/log(x)" "log(x)/x" "(e^x)/x" "(e^(1/x))/x" \ "(e^(x^2))/x" "(e^(1/(x^2))/x" "x*e^(x^2)" "x*e^(1/(x^2))" \ "e^(-x^2)" "e^(-1/(x^2))" "(e^(-x^2))/x" "(e^(-1/(x^2))/x" \ "x*e^(-x^2)" "x*e^(-1/(x^2))" default = 12 hint = "This is the first of four texture functions" visible = @showtex && @texture endparam param texfunc3 caption = "Texture Func 3" enum = "x" "1/x" "x^2" "1/x^2" "log(x)" "e^x" "x^x" "sin(x)" "cos(x)" \ "tan(x)" "asin(x)" "acos(x)" "atan(x)" "sinh(x)" "cosh(x)" "tanh(x)" \ "asinh(x)" "acosh(x)" "atanh(x)" "log(1/x)" "log(log(x))" "e^-x" \ "e^(1/x)" "x^-x" "sin(x)^2" "cos(x)^2" "tan(x)^2" "cot(x)" "sec(x)" \ "csc(x)" "cot(x)^2" "sec(x)^2" "csc(x)^2" "x^x^x" "1/x^x^x" "log(-x)" \ "1/log(x)" "xlog(x)" "sin(x)/x" "cos(x)/x" "sin(x)*cos(x)" "sin(x^2)" \ "e^(-1/x)" "xe^x" "xe^-x" "xe^(1/x)" "xe^(-1/x)" "x^3" "1/x^3" \ "acot(x)" "asec(x)" "acsc(x)" "tan(x)/x" "cot(x)/x" "sec(x)/x" \ "csc(x)/x" "xsin(x)" "xcos(x)" "xtan(x)" "xcot(x)" "xsec(x)" "xcsc(x)" \ "sin(1/x)" "cos(1/x)" "tan(1/x)" "cot(1/x)" "sec(1/x)" "csc(1/x)" \ "cotanh(x)" "sech(x)" "cosech(x)" "acoth(x)" "asech(x)" "acosech(x)" "x^power" \ "sinh(x)^2" "cosh(x)^2" "tanh(x)^2" "cotanh(x)^2" \ "sech(x)^2" "cosech(x)^2" "sinh(1/x)" "cosh(1/x)" "tanh(1/x)" \ "cotanh(1/x)" "sech(1/x)" "cosech(1/x)" "sin(x)tan(x)" "sinh(x)tanh(x)" \ "sinh(x)cosh(x)" "sinh(x)^2*cosh(x)^2" "sin(x)^2*cos(x)^2" \ "sin(1/x)*cos(1/x)" "sin(1/x)^2" "sin(x)cos(1/x)" "sin(x)sin(1/x)" \ "log(x)^2" "sin(x)sin(2x)" "e^2x" "e^-2x" "sinh(1/x)cosh(1/x)" \ "sinh(1/x)^2" "sinh(x)cosh(1/x)" "sinh(x)sinh(1/x)" "sin(x)sinh(x)" \ "sin(x)cosh(x)" "sin(x)^2*sinh(x)^2" "sin(x)e^x" "cos(x)e^x" \ "sinh(x)e^x" "cosh(x)e^x" "sin(x)log(x)" "cos(x)log(x)" "sinh(x)log(x)" \ "cosh(x)log(x)" \ "e^(x^2)" "e^(1/(x^2))" "abs(x)" "round(x)" "trunc(x)" \ "ceil(x)" "floor(x)" "x/log(x)" "log(x)/x" "(e^x)/x" "(e^(1/x))/x" \ "(e^(x^2))/x" "(e^(1/(x^2))/x" "x*e^(x^2)" "x*e^(1/(x^2))" \ "e^(-x^2)" "e^(-1/(x^2))" "(e^(-x^2))/x" "(e^(-1/(x^2))/x" \ "x*e^(-x^2)" "x*e^(-1/(x^2))" default = 15 hint = "This is the first of four texture functions" visible = @showtex && @texture endparam param texfunc4 caption = "Texture Func 4" enum = "x" "1/x" "x^2" "1/x^2" "log(x)" "e^x" "x^x" "sin(x)" "cos(x)" \ "tan(x)" "asin(x)" "acos(x)" "atan(x)" "sinh(x)" "cosh(x)" "tanh(x)" \ "asinh(x)" "acosh(x)" "atanh(x)" "log(1/x)" "log(log(x))" "e^-x" \ "e^(1/x)" "x^-x" "sin(x)^2" "cos(x)^2" "tan(x)^2" "cot(x)" "sec(x)" \ "csc(x)" "cot(x)^2" "sec(x)^2" "csc(x)^2" "x^x^x" "1/x^x^x" "log(-x)" \ "1/log(x)" "xlog(x)" "sin(x)/x" "cos(x)/x" "sin(x)*cos(x)" "sin(x^2)" \ "e^(-1/x)" "xe^x" "xe^-x" "xe^(1/x)" "xe^(-1/x)" "x^3" "1/x^3" \ "acot(x)" "asec(x)" "acsc(x)" "tan(x)/x" "cot(x)/x" "sec(x)/x" \ "csc(x)/x" "xsin(x)" "xcos(x)" "xtan(x)" "xcot(x)" "xsec(x)" "xcsc(x)" \ "sin(1/x)" "cos(1/x)" "tan(1/x)" "cot(1/x)" "sec(1/x)" "csc(1/x)" \ "cotanh(x)" "sech(x)" "cosech(x)" "acoth(x)" "asech(x)" "acosech(x)" "x^power" \ "sinh(x)^2" "cosh(x)^2" "tanh(x)^2" "cotanh(x)^2" \ "sech(x)^2" "cosech(x)^2" "sinh(1/x)" "cosh(1/x)" "tanh(1/x)" \ "cotanh(1/x)" "sech(1/x)" "cosech(1/x)" "sin(x)tan(x)" "sinh(x)tanh(x)" \ "sinh(x)cosh(x)" "sinh(x)^2*cosh(x)^2" "sin(x)^2*cos(x)^2" \ "sin(1/x)*cos(1/x)" "sin(1/x)^2" "sin(x)cos(1/x)" "sin(x)sin(1/x)" \ "log(x)^2" "sin(x)sin(2x)" "e^2x" "e^-2x" "sinh(1/x)cosh(1/x)" \ "sinh(1/x)^2" "sinh(x)cosh(1/x)" "sinh(x)sinh(1/x)" "sin(x)sinh(x)" \ "sin(x)cosh(x)" "sin(x)^2*sinh(x)^2" "sin(x)e^x" "cos(x)e^x" \ "sinh(x)e^x" "cosh(x)e^x" "sin(x)log(x)" "cos(x)log(x)" "sinh(x)log(x)" \ "cosh(x)log(x)" \ "e^(x^2)" "e^(1/(x^2))" "abs(x)" "round(x)" "trunc(x)" \ "ceil(x)" "floor(x)" "x/log(x)" "log(x)/x" "(e^x)/x" "(e^(1/x))/x" \ "(e^(x^2))/x" "(e^(1/(x^2))/x" "x*e^(x^2)" "x*e^(1/(x^2))" \ "e^(-x^2)" "e^(-1/(x^2))" "(e^(-x^2))/x" "(e^(-1/(x^2))/x" \ "x*e^(-x^2)" "x*e^(-1/(x^2))" default = 12 hint = "This is the first of four texture functions" visible = @showtex && @texture endparam param tex2power caption = "Texture Func Power" default = 4.0 hint = "This is the exponent if any of params 'Texture Func 1', \ 'Texture Func 2', 'Texture Func 3', or 'Texture Func 4' are \ set to 'x^power'" visible = @showtex && ((@texfunc1 == "x^power") || (@texfunc2 == "x^power") \ || (@texfunc3 == "x^power") || (@texfunc4 == "x^power")) && @texture endparam param texamount caption = "Texture Amount" default = 0.03 hint = "This param sets the overall amount of texture, if enabled" visible = @showtex && @texture endparam param texpower caption = "Texture Power" default = 1.0 hint = "Params 'Tex Power' & 'Tex Scale' set the initial levels in the \ texture algorithm" visible = @showtex && @texture endparam param texscale caption = "Texture Scale1" default = 20.0 hint = "Params 'Tex Power' & 'Tex Scale' set the initial levels in the \ texture algorithm; 'Tex Scale1' \ affects the size of the texture pattern" visible = @showtex && @texture endparam param texoffset caption = "Texture Offset" default = (-1,1) hint = "This param modifies the texture pattern" visible = @showtex && @texture endparam param texmod caption = "Texture Scale2" default = 5.0 hint = "This param sets the final level in the texture algorithm; \ affects the shapes made by the texture functions" visible = @showtex && @texture endparam param texinit caption = "Texture Initialization" enum = "z" "mod z" "trap" default = 0 hint = "This setting defines the input to the texture algorithm" visible = @showtex && @texture endparam heading caption = "Modulator Functions" endheading param showmodulators caption = "Show Modulator Funcs?" default = FALSE hint = "The order of the modulator functions is as follows: The two 'Front End' \ functions operate on the real and imaginary parts of the current z iterate; \ then the 'Z Initialization' function transforms the front-end modified z; \ after trapping, the trap point can be further altered with 'Trap Transmute'; \ and finally, the transmuted trap real and imaginary components can be \ modulated with the two 'Back End' functions" endparam param initialization caption = "Z Initialization" enum = "z" "1/z" "z^2" "1/z^2" "log(z)" "e^z" "z^z" "sin(z)" "cos(z)" \ "tan(z)" "asin(z)" "acos(z)" "atan(z)" "sinh(z)" "cosh(z)" "tanh(z)" \ "asinh(z)" "acosh(z)" "atanh(z)" "log(1/z)" "log(log(z))" "e^-z" \ "e^(1/z)" "z^-z" "sin(z)^2" "cos(z)^2" "tan(z)^2" "cot(z)" "sec(z)" \ "csc(z)" "cot(z)^2" "sec(z)^2" "csc(z)^2" "z^z^z" "1/z^z^z" "log(-z)" \ "1/log(z)" "zlog(z)" "sin(z)/z" "cos(z)/z" "sin(z)*cos(z)" "sin(z^2)" \ "e^(-1/z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^(-1/z)" "z^3" "1/z^3" \ "acot(z)" "asec(z)" "acsc(z)" "tan(z)/z" "cot(z)/z" "sec(z)/z" \ "csc(z)/z" "zsin(z)" "zcos(z)" "ztan(z)" "zcot(z)" "zsec(z)" "zcsc(z)" \ "sin(1/z)" "cos(1/z)" "tan(1/z)" "cot(1/z)" "sec(1/z)" "csc(1/z)" \ "cotanh(z)" "sech(z)" "cosech(z)" "acoth(z)" "asech(z)" "acosech(z)" "z^power" \ "sinh(z)^2" "cosh(z)^2" "tanh(z)^2" "cotanh(z)^2" \ "sech(z)^2" "cosech(z)^2" "sinh(1/z)" "cosh(1/z)" "tanh(1/z)" \ "cotanh(1/z)" "sech(1/z)" "cosech(1/z)" "sin(z)tan(z)" "sinh(z)tanh(z)" \ "sinh(z)cosh(z)" "sinh(z)^2*cosh(z)^2" "sin(z)^2*cos(z)^2" \ "sin(1/z)*cos(1/z)" "sin(1/z)^2" "sin(z)cos(1/z)" "sin(z)sin(1/z)" \ "log(z)^2" "sin(z)sin(2z)" "e^2z" "e^-2z" "sinh(1/z)cosh(1/z)" \ "sinh(1/z)^2" "sinh(z)cosh(1/z)" "sinh(z)sinh(1/z)" "sin(z)sinh(z)" \ "sin(z)cosh(z)" "sin(z)^2*sinh(z)^2" "sin(z)e^z" "cos(z)e^z" \ "sinh(z)e^z" "cosh(z)e^z" "sin(z)log(z)" "cos(z)log(z)" "sinh(z)log(z)" \ "cosh(z)log(z)" \ "e^(z^2)" "e^(1/(z^2))" "abs(z)" "round(z)" "trunc(z)" \ "ceil(z)" "floor(z)" "z/log(z)" "log(z)/z" "(e^z)/z" "(e^(1/z))/z" \ "(e^(z^2))/z" "(e^(1/(z^2))/z" "z*e^(z^2)" "z*e^(1/(z^2))" \ "e^(-z^2)" "e^(-1/(z^2))" "(e^(-z^2))/z" "(e^(-1/(z^2))/z" \ "z*e^(-z^2)" "z*e^(-1/(z^2))" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap, but after the two 'Front End' modulators" visible = @showmodulators endparam param zpower caption = "Z Power" default = (4,0) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = (@initialization == "z^power") && @showmodulators endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate a \ before a initialization" visible = @showmodulators endparam param initperturb caption = "Perturb Z Initialization?" default = FALSE hint = "If enabled, then 'Z Initialization' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'Z Init Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = (@initialization != "z") && @showmodulators endparam param initblend caption = "Z Init Blend" default = 0.1 hint = "If 'Perturb Z initialization' is enabled, then this sets the fraction \ of 'Z Initialization' that is mixed in with the original #z. \ Inactive if 'Perturb Z Initialization' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @initperturb && (@initialization != "z") && @showmodulators endparam param transmogrify caption = "Trap Transmute" enum = "t" "1/t" "t^2" "1/t^2" "log(t)" "e^t" "t^t" "sin(t)" "cos(t)" \ "tan(t)" "asin(t)" "acos(t)" "atan(t)" "sinh(t)" "cosh(t)" "tanh(t)" \ "asinh(t)" "acosh(t)" "atanh(t)" "log(1/t)" "log(log(t))" "e^-t" \ "e^(1/t)" "t^-t" "sin(t)^2" "cos(t)^2" "tan(t)^2" "cot(t)" "sec(t)" \ "csc(t)" "cot(t)^2" "sec(t)^2" "csc(t)^2" "t^t^t" "1/t^t^t" "log(-t)" \ "1/log(t)" "tlog(t)" "sin(t)/t" "cos(t)/t" "sin(t)*cos(t)" "sin(t^2)" \ "e^(-1/t)" "te^t" "te^-t" "te^(1/t)" "te^(-1/t)" "t^3" "1/t^3" \ "acot(t)" "asec(t)" "acsc(t)" "tan(t)/t" "cot(t)/t" "sec(t)/t" \ "csc(t)/t" "tsin(t)" "tcos(t)" "ttan(t)" "tcot(t)" "tsec(t)" "tcsc(t)" \ "sin(1/t)" "cos(1/t)" "tan(1/t)" "cot(1/t)" "sec(1/t)" "csc(1/t)" \ "cotanh(t)" "sech(t)" "cosech(t)" "acoth(t)" "asech(t)" "acosech(t)" "t^power" \ "sinh(t)^2" "cosh(t)^2" "tanh(t)^2" "cotanh(t)^2" \ "sech(t)^2" "cosech(t)^2" "sinh(1/t)" "cosh(1/t)" "tanh(1/t)" \ "cotanh(1/t)" "sech(1/t)" "cosech(1/t)" "sin(t)tan(t)" "sinh(t)tanh(t)" \ "sinh(t)cosh(t)" "sinh(t)^2*cosh(t)^2" "sin(t)^2*cos(t)^2" \ "sin(1/t)*cos(1/t)" "sin(1/t)^2" "sin(t)cos(1/t)" "sin(t)sin(1/t)" \ "log(t)^2" "sin(t)sin(2t)" "e^2t" "e^-2t" "sinh(1/t)cosh(1/t)" \ "sinh(1/t)^2" "sinh(t)cosh(1/t)" "sinh(t)sinh(1/t)" "sin(t)sinh(t)" \ "sin(t)cosh(t)" "sin(t)^2*sinh(t)^2" "sin(t)e^t" "cos(t)e^t" \ "sinh(t)e^t" "cosh(t)e^t" "sin(t)log(t)" "cos(t)log(t)" "sinh(t)log(t)" \ "cosh(t)log(t)" \ "e^(t^2)" "e^(1/(t^2))" "abs(t)" "round(t)" "trunc(t)" \ "ceil(t)" "floor(t)" "t/log(t)" "log(t)/t" "(e^t)/t" "(e^(1/t))/t" \ "(e^(t^2))/t" "(e^(1/(t^2))/t" "t*e^(t^2)" "t*e^(1/(t^2))" \ "e^(-t^2)" "e^(-1/(t^2))" "(e^(-t^2))/t" "(e^(-1/(t^2))/t" \ "t*e^(-t^2)" "t*e^(-1/(t^2))" default = 0 hint = "The point, t, on the trap can be further transformed \ prior to testing; select 't' for no transmutation. \ Transmutation does not affect a few trap flavors. Transmutation \ occurs before the two 'Back End' modulations" visible = @showmodulators endparam param tpower caption = "Trap Power" default = (4,0) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = (@transmogrify == "t^power") && @showmodulators endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" visible = @showmodulators endparam param trapperturb caption = "Perturb Trap Transmute?" default = FALSE hint = "If enabled, then 'Trap Transmute' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'Trap Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = (@transmogrify != "t") && @showmodulators endparam param trapblend caption = "Trap Blend" default = 0.1 hint = "If 'Perturb Trap Transmute' is enabled, then this sets the fraction \ of 'Trap Transmute' that is mixed in with the original trap point, t. \ Inactive if 'Perturb Trap Transmute' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @trapperturb && (@transmogrify != "t") && @showmodulators endparam param realfront caption = "FrontEndReal Warp" enum = "r" "1/r" "r^2" "1/r^2" "log(r)" "e^r" "r^r" "sin(r)" "cos(r)" \ "tan(r)" "asin(r)" "acos(r)" "atan(r)" "sinh(r)" "cosh(r)" "tanh(r)" \ "asinh(r)" "acosh(r)" "atanh(r)" "log(1/r)" "log(log(r))" "e^-r" \ "e^(1/r)" "r^-r" "sin(r)^2" "cos(r)^2" "tan(r)^2" "cot(r)" "sec(r)" \ "csc(r)" "cot(r)^2" "sec(r)^2" "csc(r)^2" "r^r^r" "1/r^r^r" "log(-r)" \ "1/log(r)" "rlog(r)" "sin(r)/r" "cos(r)/r" "sin(r)*cos(r)" "sin(r^2)" \ "e^(-1/r)" "re^r" "re^-r" "re^(1/r)" "re^(-1/r)" "r^3" "1/r^3" \ "acot(r)" "asec(r)" "acsc(r)" "tan(r)/r" "cot(r)/r" "sec(r)/r" \ "csc(r)/r" "rsin(r)" "rcos(r)" "rtan(r)" "rcot(r)" "rsec(r)" "rcsc(r)" \ "sin(1/r)" "cos(1/r)" "tan(1/r)" "cot(1/r)" "sec(1/r)" "csc(1/r)" \ "cotanh(r)" "sech(r)" "cosech(r)" "acoth(r)" "asech(r)" "acosech(r)" "r^power" \ "sinh(r)^2" "cosh(r)^2" "tanh(r)^2" "cotanh(r)^2" \ "sech(r)^2" "cosech(r)^2" "sinh(1/r)" "cosh(1/r)" "tanh(1/r)" \ "cotanh(1/r)" "sech(1/r)" "cosech(1/r)" "sin(r)tan(r)" "sinh(r)tanh(r)" \ "sinh(r)cosh(r)" "sinh(r)^2*cosh(r)^2" "sin(r)^2*cos(r)^2" \ "sin(1/r)*cos(1/r)" "sin(1/r)^2" "sin(r)cos(1/r)" "sin(r)sin(1/r)" \ "log(r)^2" "sin(r)sin(2r)" "e^2r" "e^-2r" "sinh(1/r)cosh(1/r)" \ "sinh(1/r)^2" "sinh(r)cosh(1/r)" "sinh(r)sinh(1/r)" "sin(r)sinh(r)" \ "sin(r)cosh(r)" "sin(r)^2*sinh(r)^2" "sin(r)e^r" "cos(r)e^r" \ "sinh(r)e^r" "cosh(r)e^r" "sin(r)log(r)" "cos(r)log(r)" "sinh(r)log(r)" \ "cosh(r)log(r)" \ "e^(r^2)" "e^(1/(r^2))" "abs(r)" "round(r)" "trunc(r)" \ "ceil(r)" "floor(r)" "r/log(r)" "log(r)/r" "(e^r)/r" "(e^(1/r))/r" \ "(e^(r^2))/r" "(e^(1/(r^2))/r" "r*e^(r^2)" "r*e^(1/(r^2))" \ "e^(-r^2)" "e^(-1/(r^2))" "(e^(-r^2))/r" "(e^(-1/(r^2))/r" \ "r*e^(-r^2)" "r*e^(-1/(r^2))" default = 0 hint = "This function can warp the initial value of real(z) before input to \ the 'Z Initialization' function. For 'r^power' set param 'FrontEndReal \ Power'" visible = @showmodulators endparam param rfpower caption = "FrontEndReal Power" default = 4.0 hint = "Real(z) exponent if param 'FrontEndReal Warp' is set to 'r^power'" visible = (@realfront == "r^power") && @showmodulators endparam param rfscale caption = "Real(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" visible = @showmodulators endparam param rfperturb caption = "Perturb FrontEndReal?" default = FALSE hint = "If enabled, then 'FrontEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = (@realfront != "r") && @showmodulators endparam param rfblend caption = "FrontEndReal Blend" default = 0.1 hint = "If 'Perturb FrontEndReal' is enabled, then this sets the fraction \ of 'FrontEndReal Warp' that is mixed in with the original real(a). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @r