jam-TrigTraps { ; jam 010731. Major update 011113. ; _colorings based on trigonometric functions used as traps. ; Things that have big effects: Trap Function, Z Initialization, Flavor, ; Watch What, and Color By. init: float _colorindex = 0.0 complex ztemp = (0,0), complex ztrapped = (0,0), complex ztemptrapped = (0,0) complex ztemp2 = (0,0), complex z2trapped = (0,0), complex z2temptrapped = (0,0) float ztest = 0.0, float z2testtrapped = 0.0, float scratch = 0.0 int iter = 0, int itertrapped = 0, int iter2trapped = 0, int itercount = 0 int count = @iterations int threshcount = 0 float twopi = #pi * 2.0 float scale = @tscale, float rotation = @rotate * #pi / 180, complex center = @centr if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; eliminates negation step during each fractal iteration if @towatch == 0 int watch = #maxiter else int watch = @skip + @towatch endif ; towatch complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex znewstyle = (0,0) float thresh = @threshold, float innerradius = thresh - @ringwidth if ( @whattotrap > 12 ) innerradius = thresh + @ringwidth ; innerradius is really an outerradius if we are exceeding limits endif ; @whattotrap float _color = 0.0 float zangle = 0.0 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, complex zinput = (0,0) complex zlast = (0,0), complex tlast = (1,0), float temp = 0.0, float sign = 0.0 float tempx = 0.0, float tempy = 0.0 if (( @whattotrap == 1 ) || ( @whattotrap == 4 ) || ( @whattotrap == 6 )) ; we will be trapping a maximum rather than a minimum float ztesttrapped = -1.0e20 elseif ( @whattotrap == 2 ) ; average float ztesttrapped = 0 ; this variable will store the running total for computing avg else ; minimum float ztesttrapped = 1.0e20 endif ; whattotrap if ( @pixelinit == 0 ) complex pix = #pixel elseif ( @pixelinit == 1 ) complex pix = 1/#pixel elseif ( @pixelinit == 2 ) complex pix = #pixel * #pixel elseif ( @pixelinit == 3 ) complex pix = 1 / ( #pixel * #pixel ) elseif ( @pixelinit == 4 ) complex pix = log(#pixel) elseif ( @pixelinit == 5 ) complex pix = exp( #pixel) elseif ( @pixelinit == 6 ) complex pix = #pixel^#pixel elseif ( @pixelinit == 7 ) complex pix = sin( #pixel ) elseif ( @pixelinit == 8 ) complex pix = cos( #pixel ) elseif ( @pixelinit == 9 ) complex pix = tan( #pixel ) elseif ( @pixelinit == 10 ) complex pix = asin( #pixel ) elseif ( @pixelinit == 11 ) complex pix = acos( #pixel ) elseif ( @pixelinit == 12 ) complex pix = atan( #pixel ) elseif ( @pixelinit == 13 ) complex pix = sinh( #pixel ) elseif ( @pixelinit == 14 ) complex pix = cosh( #pixel ) elseif ( @pixelinit == 15 ) complex pix = tanh( #pixel ) elseif ( @pixelinit == 16 ) complex pix = asinh( #pixel ) elseif ( @pixelinit == 17 ) complex pix = acosh( #pixel ) elseif ( @pixelinit == 18 ) complex pix = atanh( #pixel ) elseif ( @pixelinit == 19 ) complex pix = log( 1/#pixel ) elseif ( @pixelinit == 20 ) complex pix = log( log( #pixel )) elseif ( @pixelinit == 21 ) complex pix = exp( -#pixel ) elseif ( @pixelinit == 22 ) complex pix = exp( 1/#pixel ) elseif ( @pixelinit == 23 ) complex pix = #pixel^(-#pixel) elseif ( @pixelinit == 24 ) complex pix = sin( #pixel ) pix = pix * pix elseif ( @pixelinit == 25 ) complex pix = cos( #pixel ) pix = pix * pix elseif ( @pixelinit == 26 ) complex pix = tan( #pixel ) pix = pix * pix elseif ( @pixelinit == 27 ) complex pix = cotan( #pixel ) elseif ( @pixelinit == 28 ) complex pix = 1/cos( #pixel ) elseif ( @pixelinit == 29 ) complex pix = 1/sin( #pixel ) elseif ( @pixelinit == 30 ) complex pix = cotan( #pixel ) pix = pix * pix elseif ( @pixelinit == 31 ) complex pix = 1/cos( #pixel ) pix = pix * pix elseif ( @pixelinit == 32 ) complex pix = 1/sin( #pixel ) pix = pix * pix elseif ( @pixelinit == 33 ) complex pix = #pixel^(#pixel) pix = #pixel^pix elseif ( @pixelinit == 34 ) complex pix = #pixel^(#pixel) pix = 1/( #pixel^pix ) elseif ( @pixelinit == 35 ) complex pix = log(-#pixel) elseif ( @pixelinit == 36 ) complex pix = 1/log( #pixel ) elseif ( @pixelinit == 37 ) complex pix = #pixel * log( #pixel ) elseif ( @pixelinit == 38 ) complex pix = sin( #pixel ) / #pixel elseif ( @pixelinit == 39 ) complex pix = cos( #pixel ) / #pixel elseif ( @pixelinit == 40 ) complex pix = sin( #pixel ) * cos( #pixel ) elseif ( @pixelinit == 41 ) complex pix = sin( #pixel^2 ) elseif ( @pixelinit == 42 ) complex pix = exp( -1/#pixel ) elseif ( @pixelinit == 43 ) complex pix = #pixel * exp( #pixel ) elseif ( @pixelinit == 44 ) complex pix = #pixel * exp( -#pixel ) elseif ( @pixelinit == 45 ) complex pix = #pixel * exp( 1/#pixel ) elseif ( @pixelinit == 46 ) complex pix = #pixel * exp( -1/#pixel ) elseif ( @pixelinit == 47 ) complex pix = #pixel * #pixel * #pixel elseif ( @pixelinit == 48 ) complex pix = 1 / ( #pixel * #pixel * #pixel ) elseif ( @pixelinit == 49 ) complex pix = atan( 1 / #pixel ) elseif ( @pixelinit == 50 ) complex pix = acos( 1 / #pixel ) elseif ( @pixelinit == 51 ) complex pix = asin( 1 / #pixel ) elseif ( @pixelinit == 52 ) complex pix = tan( #pixel ) / #pixel elseif ( @pixelinit == 53 ) complex pix = cotan( #pixel ) / #pixel elseif ( @pixelinit == 54 ) complex pix = 1 / ( #pixel * cos( #pixel )) elseif ( @pixelinit == 55 ) complex pix = 1 / ( #pixel * sin( #pixel )) elseif ( @pixelinit == 56 ) complex pix = #pixel * sin( #pixel ) elseif ( @pixelinit == 57 ) complex pix = #pixel * cos( #pixel ) elseif ( @pixelinit == 58 ) complex pix = #pixel * tan( #pixel ) elseif ( @pixelinit == 59 ) complex pix = #pixel * cotan( #pixel ) elseif ( @pixelinit == 60 ) complex pix = #pixel /cos( #pixel ) elseif ( @pixelinit == 61 ) complex pix = #pixel /sin( #pixel ) elseif ( @pixelinit == 62 ) complex pix = sin( 1/#pixel ) elseif ( @pixelinit == 63 ) complex pix = cos( 1/#pixel ) elseif ( @pixelinit == 64 ) complex pix = tan( 1/#pixel ) elseif ( @pixelinit == 65 ) complex pix = cotan( 1/#pixel ) elseif ( @pixelinit == 66 ) complex pix = 1/cos( 1/#pixel ) elseif ( @pixelinit == 67 ) complex pix = 1/sin( 1/#pixel ) elseif ( @pixelinit == 68 ) complex pix = cotanh( #pixel ) elseif ( @pixelinit == 69 ) complex pix = 1/cosh( #pixel ) elseif ( @pixelinit == 70 ) complex pix = 1/sinh( #pixel ) elseif ( @pixelinit == 71 ) complex pix = atanh( 1/#pixel ) elseif ( @pixelinit == 72 ) complex pix = acosh( 1/#pixel ) elseif ( @pixelinit == 73 ) complex pix = asinh( 1/#pixel ) elseif @pixelinit == 74 complex pix = #pixel^@ppower elseif @pixelinit == 75 complex pix = sinh(#pixel) pix = pix * pix elseif @pixelinit == 76 complex pix = cosh( #pixel ) pix = pix * pix elseif @pixelinit == 77 complex pix = tanh(#pixel) pix = pix * pix elseif @pixelinit == 78 complex pix = cotanh( #pixel ) pix = pix * pix elseif @pixelinit == 79 complex pix = 1/cosh(#pixel) pix = pix * pix elseif @pixelinit == 80 complex pix = 1 / sinh( #pixel ) pix = pix * pix elseif @pixelinit == 81 complex pix = sinh(1/#pixel) elseif @pixelinit == 82 complex pix = cosh(1/#pixel) elseif @pixelinit == 83 complex pix = tanh(1/#pixel) elseif @pixelinit == 84 complex pix = cotanh(1/#pixel) elseif @pixelinit == 85 complex pix = 1/cosh(1/#pixel) elseif @pixelinit == 86 complex pix = 1/sinh(1/#pixel) elseif @pixelinit == 87 complex pix = sin( #pixel ) * tan(#pixel) elseif @pixelinit == 88 complex pix = sinh(#pixel) * tanh(#pixel) elseif @pixelinit == 89 complex pix = sinh(#pixel) * cosh(#pixel) elseif @pixelinit == 90 complex pix = sinh(#pixel), zscratch = cosh(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 91 complex pix = sin(#pixel), zscratch = cos(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 92 complex pix = 1/#pixel pix = sin(pix)*cos(pix) elseif @pixelinit == 93 complex pix = sin( 1/#pixel ) pix = pix*pix elseif @pixelinit == 94 complex pix = sin(#pixel) * cos(1/#pixel) elseif @pixelinit == 95 complex pix = sin(#pixel) * sin(1/#pixel) elseif @pixelinit == 96 complex pix = log(#pixel) pix = pix*pix elseif @pixelinit == 97 complex pix = sin(#pixel) * sin(2*#pixel) elseif @pixelinit == 98 complex pix = exp(2*#pixel) elseif @pixelinit == 99 complex pix = exp(-2*#pixel) elseif @pixelinit == 100 complex pix = 1/#pixel pix = sinh(pix)*cosh(pix) elseif @pixelinit == 101 complex pix = sinh( 1/#pixel ) pix = pix*pix elseif @pixelinit == 102 complex pix = sinh(#pixel) * cosh(1/#pixel) elseif @pixelinit == 103 complex pix = sinh(#pixel) * sinh(1/#pixel) elseif @pixelinit == 104 complex pix = sin(#pixel) * sinh(#pixel) elseif @pixelinit == 105 complex pix = sin(#pixel) * cosh(#pixel) elseif @pixelinit == 106 complex pix = sin(#pixel), zscratch = sinh(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 107 complex pix = sin(#pixel)*exp(#pixel) elseif @pixelinit == 108 complex pix = cos(#pixel)*exp(#pixel) elseif @pixelinit == 109 complex pix = sinh(#pixel)*exp(#pixel) elseif @pixelinit == 110 complex pix = cosh(#pixel)*exp(#pixel) elseif @pixelinit == 111 complex pix = sin(#pixel)*log(#pixel) elseif @pixelinit == 112 complex pix = cos(#pixel)*log(#pixel) elseif @pixelinit == 113 complex pix = sinh(#pixel)*log(#pixel) else ; @pixelinit == 114 complex pix = cosh(#pixel)*log(#pixel) endif ; pixelinit loop: iter = iter + 1 if ( iter > @skip ) && ( iter <= watch ) if ( @initialization == 0 ) ztemp = #z elseif ( @initialization == 1 ) ztemp = 1/#z elseif ( @initialization == 2 ) ztemp = #z * #z elseif ( @initialization == 3 ) ztemp = 1 / ( #z * #z ) elseif ( @initialization == 4 ) ztemp = log(#z) elseif ( @initialization == 5 ) ztemp = exp( #z) elseif ( @initialization == 6 ) ztemp = #z^#z elseif ( @initialization == 7 ) ztemp = sin( #z ) elseif ( @initialization == 8 ) ztemp = cos( #z ) elseif ( @initialization == 9 ) ztemp = tan( #z ) elseif ( @initialization == 10 ) ztemp = asin( #z ) elseif ( @initialization == 11 ) ztemp = acos( #z ) elseif ( @initialization == 12 ) ztemp = atan( #z ) elseif ( @initialization == 13 ) ztemp = sinh( #z ) elseif ( @initialization == 14 ) ztemp = cosh( #z ) elseif ( @initialization == 15 ) ztemp = tanh( #z ) elseif ( @initialization == 16 ) ztemp = asinh( #z ) elseif ( @initialization == 17 ) ztemp = acosh( #z ) elseif ( @initialization == 18 ) ztemp = atanh( #z ) elseif ( @initialization == 19 ) ztemp = log( 1/#z ) elseif ( @initialization == 20 ) ztemp = log( log( #z )) elseif ( @initialization == 21 ) ztemp = exp( -#z ) elseif ( @initialization == 22 ) ztemp = exp( 1/#z ) elseif ( @initialization == 23 ) ztemp = #z^(-#z) elseif ( @initialization == 24 ) ztemp = sin( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 25 ) ztemp = cos( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 26 ) ztemp = tan( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 27 ) ztemp = cotan( #z ) elseif ( @initialization == 28 ) ztemp = 1/cos( #z ) elseif ( @initialization == 29 ) ztemp = 1/sin( #z ) elseif ( @initialization == 30 ) ztemp = cotan( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 31 ) ztemp = 1/cos( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 32 ) ztemp = 1/sin( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 33 ) ztemp = #z^(#z) ztemp = #z^ztemp elseif ( @initialization == 34 ) ztemp = #z^(#z) ztemp = 1/( #z^ztemp ) elseif ( @initialization == 35 ) ztemp = log(-#z) elseif ( @initialization == 36 ) ztemp = 1/log( #z ) elseif ( @initialization == 37 ) ztemp = #z * log( #z ) elseif ( @initialization == 38 ) ztemp = sin( #z ) / #z elseif ( @initialization == 39 ) ztemp = cos( #z ) / #z elseif ( @initialization == 40 ) ztemp = sin( #z ) * cos( #z ) elseif ( @initialization == 41 ) ztemp = sin( #z^2 ) elseif ( @initialization == 42 ) ztemp = exp( -1/#z ) elseif ( @initialization == 43 ) ztemp = #z * exp( #z ) elseif ( @initialization == 44 ) ztemp = #z * exp( -#z ) elseif ( @initialization == 45 ) ztemp = #z * exp( 1/#z ) elseif ( @initialization == 46 ) ztemp = #z * exp( -1/#z ) elseif ( @initialization == 47 ) ztemp = #z * #z * #z elseif ( @initialization == 48 ) ztemp = 1 / ( #z * #z * #z ) elseif ( @initialization == 49 ) ztemp = atan( 1 / #z ) elseif ( @initialization == 50 ) ztemp = acos( 1 / #z ) elseif ( @initialization == 51 ) ztemp = asin( 1 / #z ) elseif ( @initialization == 52 ) ztemp = tan( #z ) / #z elseif ( @initialization == 53 ) ztemp = cotan( #z ) / #z elseif ( @initialization == 54 ) ztemp = 1 / ( #z * cos( #z )) elseif ( @initialization == 55 ) ztemp = 1 / ( #z * sin( #z )) elseif ( @initialization == 56 ) ztemp = #z * sin( #z ) elseif ( @initialization == 57 ) ztemp = #z * cos( #z ) elseif ( @initialization == 58 ) ztemp = #z * tan( #z ) elseif ( @initialization == 59 ) ztemp = #z * cotan( #z ) elseif ( @initialization == 60 ) ztemp = #z/cos( #z ) elseif ( @initialization == 61 ) ztemp = #z/sin( #z ) elseif ( @initialization == 62 ) ztemp = sin( 1/#z ) elseif ( @initialization == 63 ) ztemp = cos( 1/#z ) elseif ( @initialization == 64 ) ztemp = tan( 1/#z ) elseif ( @initialization == 65 ) ztemp = cotan( 1/#z ) elseif ( @initialization == 66 ) ztemp = 1/cos( 1/#z ) elseif ( @initialization == 67 ) ztemp = 1/sin( 1/#z ) elseif ( @initialization == 68 ) ztemp = cotanh( #z ) elseif ( @initialization == 69 ) ztemp = 1/cosh( #z ) elseif ( @initialization == 70 ) ztemp = 1/sinh( #z ) elseif ( @initialization == 71 ) ztemp = atanh( 1/#z ) elseif ( @initialization == 72 ) ztemp = acosh( 1/#z ) elseif ( @initialization == 73 ) ztemp = asinh( 1/#z ) elseif @initialization == 74 ztemp = #z^@zpower elseif @initialization == 75 ztemp = sinh(#z) ztemp = ztemp * ztemp elseif @initialization == 76 ztemp = cosh( #z ) ztemp = ztemp * ztemp elseif @initialization == 77 ztemp = tanh(#z) ztemp = ztemp * ztemp elseif @initialization == 78 ztemp = cotanh( #z ) ztemp = ztemp * ztemp elseif @initialization == 79 ztemp = 1/cosh(#z) ztemp = ztemp * ztemp elseif @initialization == 80 ztemp = 1 / sinh( #z ) ztemp = ztemp * ztemp elseif @initialization == 81 ztemp = sinh(1/#z) elseif @initialization == 82 ztemp = cosh(1/#z) elseif @initialization == 83 ztemp = tanh(1/#z) elseif @initialization == 84 ztemp = cotanh(1/#z) elseif @initialization == 85 ztemp = 1/cosh(1/#z) elseif @initialization == 86 ztemp = 1/sinh(1/#z) elseif @initialization == 87 ztemp = sin( #z ) * tan(#z) elseif @initialization == 88 ztemp = sinh(#z) * tanh(#z) elseif @initialization == 89 ztemp = sinh(#z) * cosh(#z) elseif @initialization == 90 ztemp = sinh(#z), zscratch = cosh(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 91 ztemp = sin(#z), zscratch = cos(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 92 ztemp = 1/#z ztemp = sin(ztemp)*cos(ztemp) elseif @initialization == 93 ztemp = sin( 1/#z ) ztemp = ztemp*ztemp elseif @initialization == 94 ztemp = sin(#z) * cos(1/#z) elseif @initialization == 95 ztemp = sin(#z) * sin(1/#z) elseif @initialization == 96 ztemp = log(#z) ztemp = ztemp*ztemp elseif @initialization == 97 ztemp = sin(#z) * sin(2*#z) elseif @initialization == 98 ztemp = exp(2*#z) elseif @initialization == 99 ztemp = exp(-2*#z) elseif @initialization == 100 ztemp = 1/#z ztemp = sinh(ztemp)*cosh(ztemp) elseif @initialization == 101 ztemp = sinh( 1/#z ) ztemp = ztemp*ztemp elseif @initialization == 102 ztemp = sinh(#z) * cosh(1/#z) elseif @initialization == 103 ztemp = sinh(#z) * sinh(1/#z) elseif @initialization == 104 ztemp = sin(#z) * sinh(#z) elseif @initialization == 105 ztemp = sin(#z) * cosh(#z) elseif @initialization == 106 ztemp = sin(#z), zscratch = sinh(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 107 ztemp = sin(#z)*exp(#z) elseif @initialization == 108 ztemp = cos(#z)*exp(#z) elseif @initialization == 109 ztemp = sinh(#z)*exp(#z) elseif @initialization == 110 ztemp = cosh(#z)*exp(#z) elseif @initialization == 111 ztemp = sin(#z)*log(#z) elseif @initialization == 112 ztemp = cos(#z)*log(#z) elseif @initialization == 113 ztemp = sinh(#z)*log(#z) else ; @initialization == 114 ztemp = cosh(#z)*log(#z) endif ; initialization if @trapvariant != 0 if @swaporder if @trapvariant == 1 ; flip ztemp = flip(ztemp) elseif @trapvariant == 2 ; conjugate ztemp = conj(ztemp) elseif @trapvariant == 3 ; flip conjugate ztemp = flip(conj(ztemp)) elseif @trapvariant == 4 ; negate ztemp = -ztemp elseif @trapvariant == 5 ; negate flip ztemp = -flip(ztemp) elseif @trapvariant == 6 ; negate conjugate ztemp = -conj(ztemp) elseif @trapvariant == 7 ; negate flip conj = conj flip ztemp = -flip(conj(ztemp)) endif ; trapvariant2 endif ; swaporder endif ; trapvariant1 if @operator != 0 if @operator == 1 ; multiplication ztemp = ztemp * @operatee elseif @operator == 2 ; addition ztemp = ztemp + @operatee elseif @operator == 3 ; subtraction ztemp = ztemp - @operatee elseif @operator == 4 ; division ztemp = ztemp / @operatee elseif @operator == 5 ; exponentiation ztemp = ztemp ^ @operatee elseif @operator == 6 ; subtraction2 ztemp = @operatee - ztemp elseif @operator == 7 ; division2 ztemp = @operatee / ztemp elseif @operator == 8 ; exponential2 ztemp = @operatee ^ ztemp elseif @operator == 9 ; logarithm ztemp = log(ztemp) / log(@operatee) elseif @operator == 10 ; logarithm2 ztemp = log(@operatee) / log(ztemp) endif ; operator2 endif ; operator1 if @trapvariant != 0 if !@swaporder if @trapvariant == 1 ; flip ztemp = flip(ztemp) elseif @trapvariant == 2 ; conjugate ztemp = conj(ztemp) elseif @trapvariant == 3 ; flip conjugate ztemp = flip(conj(ztemp)) elseif @trapvariant == 4 ; negate ztemp = -ztemp elseif @trapvariant == 5 ; negate flip ztemp = -flip(ztemp) elseif @trapvariant == 6 ; negate conjugate ztemp = -conj(ztemp) elseif @trapvariant == 7 ; negate flip conj = conj flip ztemp = -flip(conj(ztemp)) endif ; trapvariant2 endif ; swaporder endif ; trapvariant1 ; center, rotate, scale z ztemp = ztemp - center ztemp = ztemp * exp( flip( rotation )) ztemp = scale * ztemp if @history if @histype == 0 zold = ztemp - zold, ztemp = zold elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold, zold = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold, zold = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp zangle = atan2( ztemp ) if zangle < 0 zangle = zangle + twopi endif ; zangle if @newstyle znewstyle = ztemp else znewstyle = #z endif ; newstyle repeat ; count if ( @trig == 0 ) ; sin ztemp = @amplitude * sin( @frequency * ztemp + pix ) elseif ( @trig == 1 ) ; cos ztemp = @amplitude * cos( @frequency * ztemp + pix ) elseif ( @trig == 2 ) ; tan ztemp = @amplitude * tan( @frequency * ztemp + pix ) elseif ( @trig == 3 ) ; cot ztemp = @amplitude * cotan( @frequency * ztemp + pix ) elseif ( @trig == 4 ) ; sec ztemp = @amplitude / cos( @frequency * ztemp + pix ) elseif ( @trig == 5 ) ; csc ztemp = @amplitude / sin( @frequency * ztemp + pix ) elseif ( @trig == 6 ) ; sin2 ztemp = @amplitude * sin( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 7 ) ; cos2 ztemp = @amplitude * cos( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 8 ) ; tan2 ztemp = @amplitude * tan( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 9 ) ; cot2 ztemp = @amplitude * cotan( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 10 ) ; sec2 ztemp = @amplitude / cos( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 11 ) ; csc2 ztemp = @amplitude / sin( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 12 ) ; sinz/z ztemp = @amplitude * sin( @frequency * ztemp + pix ) / ztemp elseif ( @trig == 13 ) ; cosz/z ztemp = @amplitude * cos( @frequency * ztemp + pix ) / ztemp elseif ( @trig == 14 ) ; tanz/z ztemp = @amplitude * tan( @frequency * ztemp + pix ) / ztemp elseif ( @trig == 15 ) ; cotz/z ztemp = @amplitude * cotan( @frequency * ztemp + pix ) / ztemp elseif ( @trig == 16 ) ; secz/z ztemp = @amplitude / ( ztemp * cos( @frequency * ztemp + pix )) elseif ( @trig == 17 ) ; cscz/z ztemp = @amplitude / (ztemp * sin( @frequency * ztemp + pix )) elseif ( @trig == 18 ) ; zsinz ztemp = ztemp * @amplitude * sin( @frequency * ztemp + pix ) elseif ( @trig == 19 ) ; zcosz ztemp = ztemp * @amplitude * cos( @frequency * ztemp + pix ) elseif ( @trig == 20 ) ; ztanz ztemp = ztemp * @amplitude * tan( @frequency * ztemp + pix ) elseif ( @trig == 21 ) ; zcotz ztemp = ztemp * @amplitude * cotan( @frequency * ztemp + pix ) elseif ( @trig == 22 ) ; zsecz ztemp = ztemp * @amplitude / cos( @frequency * ztemp + pix ) elseif ( @trig == 23 ) ; zcscz ztemp = ztemp * @amplitude / sin( @frequency * ztemp + pix ) elseif ( @trig == 24 ) ; z2sinz ztemp = ztemp * ztemp * @amplitude * sin( @frequency * ztemp + pix ) elseif ( @trig == 25 ) ; z2cosz ztemp = ztemp * ztemp * @amplitude * cos( @frequency * ztemp + pix ) elseif ( @trig == 26 ) ; z2tanz ztemp = ztemp * ztemp * @amplitude * tan( @frequency * ztemp + pix ) elseif ( @trig == 27 ) ; sinz*cosz ztemp = @amplitude * @amplitude * sin( @frequency * ztemp + pix ) \ * cos( @frequency * ztemp + pix ) elseif ( @trig == 28 ) ; sin2cos2 ztemp2 = @amplitude * sin( @frequency * ztemp + pix ) ztemp2 = ztemp2 * ztemp2 ztemp = @amplitude * cos( @frequency * ztemp + pix ) ztemp = ztemp * ztemp * ztemp2 elseif ( @trig == 29 ) ; arcsin ztemp = @amplitude * asin( @frequency * ztemp + pix ) elseif ( @trig == 30 ) ; arccos ztemp = @amplitude * acos( @frequency * ztemp + pix ) elseif ( @trig == 31 ) ; arctan ztemp = @amplitude * atan( @frequency * ztemp + pix ) elseif ( @trig == 32 ) ; arccot ztemp = @amplitude * atan( 1/(@frequency * ztemp + pix )) elseif ( @trig == 33 ) ; arcsec ztemp = @amplitude * acos( 1/(@frequency * ztemp + pix )) elseif ( @trig == 34 ) ; arccsc ztemp = @amplitude * asin( 1/(@frequency * ztemp + pix )) elseif ( @trig == 35 ) ; arcsin2 ztemp = @amplitude * asin( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 36 ) ; arccos2 ztemp = @amplitude * acos( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 37 ) ; arctan2 ztemp = @amplitude * atan( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @trig == 38 ) ; arccot2 ztemp = @amplitude * atan( 1/(@frequency * ztemp + pix )) ztemp = ztemp * ztemp elseif ( @trig == 39 ) ; arcsec2 ztemp = @amplitude * acos( 1/(@frequency * ztemp + pix )) ztemp = ztemp * ztemp elseif ( @trig == 40 ) ; arccsc2 ztemp = @amplitude * asin( 1/(@frequency * ztemp + pix )) ztemp = ztemp * ztemp elseif ( @trig == 41 ) ; zarcsinz ztemp = ztemp * @amplitude * asin( @frequency * ztemp + pix ) elseif ( @trig == 42 ) ; zarccosz ztemp = ztemp * @amplitude * acos( @frequency * ztemp + pix ) elseif ( @trig == 43 ) ; zarctanz ztemp = ztemp * @amplitude * atan( @frequency * ztemp + pix ) elseif ( @trig == 44 ) ; zarccotz ztemp = ztemp * @amplitude * atan( 1/(@frequency * ztemp + pix )) elseif ( @trig == 45 ) ; zarcsecz ztemp = ztemp * @amplitude * acos( 1/(@frequency * ztemp + pix )) elseif ( @trig == 46 ) ; zarccscz ztemp = ztemp * @amplitude * asin( 1/(@frequency * ztemp + pix )) elseif ( @trig == 47 ) ; arcsinz/z ztemp = @amplitude * asin( @frequency * ztemp + pix ) / ztemp elseif ( @trig == 48 ) ; arccosz/z ztemp = @amplitude * acos( @frequency * ztemp + pix ) / ztemp elseif ( @trig == 49 ) ; arctanz/z ztemp = @amplitude * atan( @frequency * ztemp + pix ) / ztemp elseif ( @trig == 50 ) ; arccotz/z ztemp = @amplitude * atan( 1/(@frequency * ztemp + pix )) / ztemp elseif ( @trig == 51 ) ; arcsecz/z ztemp = @amplitude * acos( 1/(@frequency * ztemp + pix )) / ztemp else ; @trig == 52 ; arccscz/z ztemp = @amplitude * asin( 1/(@frequency * ztemp + pix )) / ztemp endif ; trig if @polar ztemp = cabs(ztemp) * exp( flip( zangle )) endif ; @polar if ( @trapmode == 0 ) ; transmogrified trap-modulated znewstyle ztest = cabs( ztemp ) elseif ( @trapmode == 1 ) ; distance between fractal and trap ztest = cabs( znewstyle - ztemp ) elseif ( @trapmode == 2 ) ; difference ztest = cabs( ztemp - znewstyle ) elseif ( @trapmode == 3 ) ; sum ztest = cabs( znewstyle + ztemp ) elseif ( @trapmode == 4 ) ; product ztest = cabs( znewstyle * ztemp ) elseif ( @trapmode == 5 ) ; quotient 1 ztest = cabs( znewstyle / ztemp ) elseif ( @trapmode == 6 ) ; quotient 2 ztest = cabs( ztemp / znewstyle ) elseif ( @trapmode == 7 ) ; power 1 ztest = cabs( znewstyle ^ ztemp ) elseif ( @trapmode == 8 ) ; power 2 ztest = cabs( ztemp ^ znewstyle ) elseif ( @trapmode == 9 ) ; arithmetic mean ztest = cabs( (znewstyle + ztemp)/2 ) elseif ( @trapmode == 10 ) ; geometric mean ztest = cabs( sqrt(znewstyle * ztemp) ) elseif ( @trapmode == 11 ) ; angle 1 ztest = #pi + atan2( ztemp ) elseif ( @trapmode == 12 ) ; angle 2 ztest = #pi + atan2( znewstyle - ztemp ) elseif ( @trapmode == 13 ) ; angle 3 ztest = #pi + atan2( znewstyle + ztemp ) elseif ( @trapmode == 14 ) ; angle 4 ztest = #pi + atan2( znewstyle * ztemp ) elseif ( @trapmode == 15 ) ; angle 5 ztest = #pi + atan2( znewstyle / ztemp ) elseif ( @trapmode == 16 ) ; angle 6 ztest = #pi + atan2( ztemp / znewstyle ) elseif ( @trapmode == 17 ) ; angle 7 ztest = #pi + atan2( znewstyle ^ ztemp ) elseif ( @trapmode == 18 ) ; angle 8 ztest = #pi + atan2( ztemp ^ znewstyle ) elseif ( @trapmode == 19 ) ; real 1 ztest = abs( real( ztemp )) elseif ( @trapmode == 20 ) ; real 2 ztest = abs( real( znewstyle - ztemp )) elseif ( @trapmode == 21 ) ; real 3 ztest = abs( real( znewstyle + ztemp )) elseif ( @trapmode == 22 ) ; real 4 ztest = abs( real( znewstyle * ztemp )) elseif ( @trapmode == 23 ) ; real 5 ztest = abs( real( znewstyle / ztemp )) elseif ( @trapmode == 24 ) ; real 6 ztest = abs( real( ztemp / znewstyle )) elseif ( @trapmode == 25 ) ; real 7 ztest = abs( real( znewstyle ^ ztemp )) elseif ( @trapmode == 26 ) ; real 8 ztest = abs( real( ztemp ^ znewstyle )) elseif ( @trapmode == 27 ) ; imag 1 ztest = abs( imag( ztemp )) elseif ( @trapmode == 28 ) ; imag 2 ztest = abs( imag( znewstyle - ztemp )) elseif ( @trapmode == 29 ) ; imag 3 ztest = abs( imag( znewstyle + ztemp )) elseif ( @trapmode == 30 ) ; imag 4 ztest = abs( imag( znewstyle * ztemp )) elseif ( @trapmode == 31 ) ; imag 5 ztest = abs( imag( znewstyle / ztemp )) elseif ( @trapmode == 32 ) ; imag 6 ztest = abs( imag( ztemp / znewstyle )) elseif ( @trapmode == 33 ) ; imag 7 ztest = abs( imag( znewstyle ^ ztemp )) else ; @trapmode == 34 --- imag 8 ztest = abs( imag( ztemp ^ znewstyle )) endif ; trapmode ; Save value for later turbulence tlast = ztest if ( @whattotrap == 0 ) ; minimum if ( ztest < ztesttrapped ) ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp itertrapped = iter endif ; ztest elseif ( @whattotrap == 1 ) ; maximum if ( ztest > ztesttrapped ) ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp itertrapped = iter endif ; ztest elseif ( @whattotrap == 2 ) ; average ztesttrapped = ztest + ztesttrapped itercount = itercount + 1 ztrapped = znewstyle ; this will not be an accurate mode ztemptrapped = ztemp ; this will not be an accurate mode itertrapped = iter ; this will not be an accurate mode elseif ( @whattotrap == 3 ) ; 2nd minimum if ( ztest < ztesttrapped ) ; found a new minimum z2testtrapped = ztesttrapped ; store 2nd minimum ztesttrapped = ztest ; and store new minimum z2trapped = ztrapped ztrapped = znewstyle z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 4 ) ; 2nd maximum if ( ztest > ztesttrapped ) z2testtrapped = ztesttrapped ztesttrapped = ztest z2trapped = ztrapped ztrapped = znewstyle z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 5 ) ; avg. of min & 2nd min values if ( ztest < ztesttrapped ) ; found a new minimum z2testtrapped = ztesttrapped ; store 2nd minimum ztesttrapped = ztest ; and store new minimum z2trapped = ztrapped ztrapped = znewstyle z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 6 ) ; avg. of max & 2nd max values if ( ztest > ztesttrapped ) ; found a new maximum z2testtrapped = ztesttrapped ; store 2nd maximum ztesttrapped = ztest ; and store new maximum z2trapped = ztrapped ztrapped = znewstyle z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 7 ) ; first trap iteration if ( itertrapped == 0 ) ; nothing trapped yet, so this must be the first itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; itertrapped elseif ( @whattotrap == 8 ) ; last trap iteration; store each one in turn itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ( @whattotrap == 9 ) ; first threshold if ( itertrapped == 0 ) ; only trapping the first iteration that crosses threshold if ( ztest < @threshold ) ; if so, trap it if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; itertrapped elseif ( @whattotrap == 10 ) ; last threshold --- just store them all if ( ztest < @threshold ) ; if so, trap it if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest elseif @whattotrap == 11 ; threshold count, but store last value if ( ztest < @threshold ) ; if so, trap it threshcount = threshcount + 1 if !@ringstyle itertrapped = threshcount * iter ztesttrapped = threshcount * ztest ztrapped = threshcount * znewstyle ztemptrapped = threshcount * ztemp elseif ztest > innerradius itertrapped = threshcount * iter ztesttrapped = threshcount * ztest ztrapped = threshcount * znewstyle ztemptrapped = threshcount * ztemp endif ; ringstyle endif ; ztest elseif ( @whattotrap == 12 ) ; 2nd to dip below threshold value if ( ztest < @threshold ) if ( itertrapped == 0 ) ; nothing trapped yet, set flag for next time itertrapped = -1 elseif itertrapped == -1 ; must be the 2nd threshold value if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; itertrapped endif ; test elseif ( @whattotrap == 13 ) ; 1st to exceed threshold limit if ( itertrapped == 0 ) ; nothing trapped yet if ( ztest > @threshold ) if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius for limits itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; itertrapped elseif ( @whattotrap == 14 ) ; 2nd to exceed threshold limit if ( ztest > @threshold ) if ( itertrapped == 0 ) ; nothing trapped yet, set flag for next time itertrapped = -1 elseif itertrapped == -1 ; must be the 2nd threshold value if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; itertrapped endif ; test elseif ( @whattotrap == 15 ) ; last to exceed threshold --- just store them all if ( ztest > @threshold ) if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius for limits itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; whattotrap count = count - 1 until ( count < 1 ) endif ; iter final: if ( itertrapped != 0 ) ; something has been trapped if ( @whattotrap == 2 ) ; calculate the average ztesttrapped = ztesttrapped / itercount elseif ( ( @whattotrap == 3 ) || ( @whattotrap == 4 ) ) ; we need to plot ; 2nd min/max, so switch ztesttrapped = z2testtrapped ztrapped = z2trapped ztemptrapped = z2temptrapped itertrapped = iter2trapped elseif ( ( @whattotrap == 5 ) || ( @whattotrap == 6 ) ) ; we need to average ztesttrapped = ( ztesttrapped + z2testtrapped ) / 2 ztrapped = ( ztrapped + z2trapped ) / 2 scratch = ( itertrapped + iter2trapped ) / 2.0 itertrapped = round( scratch ) endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; products ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; iteration _colorindex = @colorspread * itertrapped _color = _colorindex / #maxiter elseif ( @colorby == 1 ) ; magnitude _color = @colorspread * ztesttrapped elseif ( @colorby == 2 ) ; distance _color = @colorspread * cabs( ztrapped - ztemptrapped ) elseif ( @colorby == 3 ) ; angle _colorindex = atan2( ztrapped ) + #pi _color = @colorspread * _colorindex elseif ( @colorby == 4 ) ; modulated angle _color = @colorspread * ( #pi + atan2( ztemptrapped )) elseif ( @colorby == 5 ) ; angle of difference _color = @colorspread * ( #pi + atan2( ztrapped - ztemptrapped )) elseif ( @colorby == 6 ) ; zmag _color = @colorspread * cabs( ztrapped ) elseif ( @colorby == 7 ) ; modulated zmag _color = @colorspread * cabs( ztemptrapped ) endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else _color = ((_color + _coloradjust) + ( itertrapped % @ranges )) / @ranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else if ( @solid ) #solid = true else #index = 0.98 + _coloradjust endif ; solid endif ; itertrapped default: title = "Surreal" param trig caption = "Trap Function" enum = "sine" "cosine" "tangent" "cotangent" "secant" "cosecant" \ "sin^2" "cos^2" "tan^2" "cot^2" "sec^2" "csc^2" "sin(z)/z" \ "cos(z)/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)" "z^2 sin(z)" \ "z^2 cos(z)" "z^2 tan(z)" "sin(z)cos(z)" "sin^2(z)cos^2(z)" \ "arcsin" "arccos" "arctan" "arccot" "arcsec" "arccsc" "arcsin^2" \ "arccos^2" "arctan^2" "arccot^2" "arcsec^2" "arccsc^2" "zarcsin(z)" \ "zarccos(z)" "zarctan(z)" "zarccot(z)" "zarcsec(z)" "zarccsc(z)" \ "arcsin(z)/z" "arccos(z)/z" "arctan(z)/z" "arccot(z)/z" "arcsec(z)/z" \ "arccsc(z)/z" default = 0 hint = "Select primary trap function" endparam param trapmode caption = "Flavor" enum = "modulation" "distance" "difference" "sum" "product" "quotient 1" \ "quotient 2" "power 1" "power 2" "arith. mean" "geom. mean" "angle 1" \ "angle 2" "angle 3" "angle 4" "angle 5" "angle 6" "angle 7" "angle 8" \ "real 1" "real 2" "real 3" "real 4" "real 5" "real 6" "real 7" "real 8" \ "imag 1" "imag 2" "imag 3" "imag 4" "imag 5" "imag 6" "imag 7" "imag 8" default = 0 hint = "The trap mode. The 'Watch What?' comparison is based on this mode" endparam param whattotrap caption = "Watch What?" enum = "minimum" "maximum" "average" "2nd minimum" "2nd maximum" \ "min2 avg" "max2 avg" "first" "last" "threshold" "last threshold" \ "threshold count" "2nd threshold" "1st limit" "2nd limit" "last limit" default = 0 hint = "What value should be examined for trapping? The 'Flavor' value is \ trapped using this criterion. If 'Watch What?' = [first] 'threshold', \ 'last threshold', or 'threshold count', parameter 'Threshold' may be adjusted" 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to input to the trap function loop" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" endparam param @colorby caption = "Color By?" enum = "iteration" "magnitude" "distance" "angle" "modulated angle" \ "difference angle" "z magnitude" "modulated magnitude" default = 0 hint = "Criterion for computing color index. For selections other than \ 'iteration', parameter 'Color Spread' may need to be drastically lowered!" endparam param @colorspread caption = "Color Spread" default = 6.0 hint = "This value can be used to expand/contract the range of colors. \ For 'Color By?' modes other than 'iteration', this value may need to \ be reduced significantly (~0.1-0.3 or so)." endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the trap function should be rotated from \ its default position" endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of trap function center/origin" endparam param tscale caption = "Scale" default = 1.0 min = 0.0 hint = "This parameter determines the size of the trap function" endparam param pixelinit caption = "Pixel Initialization" enum = "p" "1/p" "p^2" "1/p^2" "log(p)" "e^p" "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" \ "1/p^3" "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" \ "sec(p)/p" "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" \ "psec(p)" "pcsc(p)" "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" \ "sec(1/p)" "csc(1/p)" "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" \ "asech(p)" "acosech(p)" "p^power" \ "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "The trap loop utilizes this initialized pixel value; p = #pixel" endparam param ppower caption = "Pixel Power" default = (0,1) hint = "Pixel exponent if param 'Pixel Initialization' is set to 'p^power'" endparam param frequency caption = "Frequency" default = (-1,5) hint = "Sets the frequency of the trap function" endparam param amplitude caption = "Amplitude" default = (0.5,4) hint = "Sets the height of the trap function" endparam param threshold caption = "Threshold" default = 0.20 hint = "This parameter sets the maximum value that will be trapped if 'Watch What?' is set \ to 'threshold', and the minimum value that will be trapped if 'Watch What?' is set \ to 'limit'" endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Watch What' is set to one \ of the 'Threshold' or 'Limit' options, then Threshold becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Watch What' is set to a 'Threshold' \ or 'Limit' option, this parameter determines the width of the ring trap" endparam param iterations caption = "Trap Iterations" default = 1 min = 1 hint = "The number of times the trap function will loop for each fractal iteration" endparam param skip caption = "Iterations to Skip" default = 0 min = 0 hint = "The number of fractal iterations to skip before starting to trap z" 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" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" endparam param cpower caption = "Color Power" default = 0.25 hint = "Color index exponent if param 'Color Warp Factor' is set to 'c^power'" endparam param newstyle caption = "New Style Trapping?" default = FALSE hint = "If enabled, compares trapped value with initialized z rather \ than #z" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param solid caption = "Solid Background" default = false hint = "Sets non-trapped pixels to the inside solid color" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (fBm) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" 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" endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" endparam } jam-HypTraps { ; jam 010731 ; Colorings based on hyperbolic functions used as traps. ; Things that have big effects: Trap Function, Z Initialization, Flavor, ; Watch What, and Color By. init: float _colorindex = 0.0 complex ztemp = (0,0), complex ztrapped = (0,0), complex ztemptrapped = (0,0) complex ztemp2 = (0,0), complex z2trapped = (0,0), complex z2temptrapped = (0,0) float ztest = 0.0, float z2testtrapped = 0.0, float scratch = 0.0 int iter = 0, int itertrapped = 0, int iter2trapped = 0, int itercount = 0 int count = @iterations int threshcount = 0 float twopi = #pi * 2.0 float scale = @tscale, float rotation = @rotate * #pi / 180, complex center = @centr if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; eliminates negation step during each fractal iteration if @towatch == 0 int watch = #maxiter else int watch = @skip + @towatch endif ; towatch complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex znewstyle = (0,0) float thresh = @threshold, float innerradius = thresh - @ringwidth if ( @whattotrap > 12 ) innerradius = thresh + @ringwidth ; innerradius is really an outerradius if we are exceeding limits endif ; @whattotrap float _color = 0.0 float zangle = 0.0 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, complex zinput = (0,0) complex zlast = (0,0), complex tlast = (1,0), float temp = 0.0, float sign = 0.0 float tempx = 0.0, float tempy = 0.0 if (( @whattotrap == 1 ) || ( @whattotrap == 4 ) || ( @whattotrap == 6 )) ; we will be trapping a maximum rather than a minimum float ztesttrapped = -1.0e20 elseif ( @whattotrap == 2 ) ; average float ztesttrapped = 0 ; this variable will store the running total for computing avg else ; minimum float ztesttrapped = 1.0e20 endif ; whattotrap if ( @pixelinit == 0 ) complex pix = #pixel elseif ( @pixelinit == 1 ) complex pix = 1/#pixel elseif ( @pixelinit == 2 ) complex pix = #pixel * #pixel elseif ( @pixelinit == 3 ) complex pix = 1 / ( #pixel * #pixel ) elseif ( @pixelinit == 4 ) complex pix = log(#pixel) elseif ( @pixelinit == 5 ) complex pix = exp( #pixel) elseif ( @pixelinit == 6 ) complex pix = #pixel^#pixel elseif ( @pixelinit == 7 ) complex pix = sin( #pixel ) elseif ( @pixelinit == 8 ) complex pix = cos( #pixel ) elseif ( @pixelinit == 9 ) complex pix = tan( #pixel ) elseif ( @pixelinit == 10 ) complex pix = asin( #pixel ) elseif ( @pixelinit == 11 ) complex pix = acos( #pixel ) elseif ( @pixelinit == 12 ) complex pix = atan( #pixel ) elseif ( @pixelinit == 13 ) complex pix = sinh( #pixel ) elseif ( @pixelinit == 14 ) complex pix = cosh( #pixel ) elseif ( @pixelinit == 15 ) complex pix = tanh( #pixel ) elseif ( @pixelinit == 16 ) complex pix = asinh( #pixel ) elseif ( @pixelinit == 17 ) complex pix = acosh( #pixel ) elseif ( @pixelinit == 18 ) complex pix = atanh( #pixel ) elseif ( @pixelinit == 19 ) complex pix = log( 1/#pixel ) elseif ( @pixelinit == 20 ) complex pix = log( log( #pixel )) elseif ( @pixelinit == 21 ) complex pix = exp( -#pixel ) elseif ( @pixelinit == 22 ) complex pix = exp( 1/#pixel ) elseif ( @pixelinit == 23 ) complex pix = #pixel^(-#pixel) elseif ( @pixelinit == 24 ) complex pix = sin( #pixel ) pix = pix * pix elseif ( @pixelinit == 25 ) complex pix = cos( #pixel ) pix = pix * pix elseif ( @pixelinit == 26 ) complex pix = tan( #pixel ) pix = pix * pix elseif ( @pixelinit == 27 ) complex pix = cotan( #pixel ) elseif ( @pixelinit == 28 ) complex pix = 1/cos( #pixel ) elseif ( @pixelinit == 29 ) complex pix = 1/sin( #pixel ) elseif ( @pixelinit == 30 ) complex pix = cotan( #pixel ) pix = pix * pix elseif ( @pixelinit == 31 ) complex pix = 1/cos( #pixel ) pix = pix * pix elseif ( @pixelinit == 32 ) complex pix = 1/sin( #pixel ) pix = pix * pix elseif ( @pixelinit == 33 ) complex pix = #pixel^(#pixel) pix = #pixel^pix elseif ( @pixelinit == 34 ) complex pix = #pixel^(#pixel) pix = 1/( #pixel^pix ) elseif ( @pixelinit == 35 ) complex pix = log(-#pixel) elseif ( @pixelinit == 36 ) complex pix = 1/log( #pixel ) elseif ( @pixelinit == 37 ) complex pix = #pixel * log( #pixel ) elseif ( @pixelinit == 38 ) complex pix = sin( #pixel ) / #pixel elseif ( @pixelinit == 39 ) complex pix = cos( #pixel ) / #pixel elseif ( @pixelinit == 40 ) complex pix = sin( #pixel ) * cos( #pixel ) elseif ( @pixelinit == 41 ) complex pix = sin( #pixel^2 ) elseif ( @pixelinit == 42 ) complex pix = exp( -1/#pixel ) elseif ( @pixelinit == 43 ) complex pix = #pixel * exp( #pixel ) elseif ( @pixelinit == 44 ) complex pix = #pixel * exp( -#pixel ) elseif ( @pixelinit == 45 ) complex pix = #pixel * exp( 1/#pixel ) elseif ( @pixelinit == 46 ) complex pix = #pixel * exp( -1/#pixel ) elseif ( @pixelinit == 47 ) complex pix = #pixel * #pixel * #pixel elseif ( @pixelinit == 48 ) complex pix = 1 / ( #pixel * #pixel * #pixel ) elseif ( @pixelinit == 49 ) complex pix = atan( 1 / #pixel ) elseif ( @pixelinit == 50 ) complex pix = acos( 1 / #pixel ) elseif ( @pixelinit == 51 ) complex pix = asin( 1 / #pixel ) elseif ( @pixelinit == 52 ) complex pix = tan( #pixel ) / #pixel elseif ( @pixelinit == 53 ) complex pix = cotan( #pixel ) / #pixel elseif ( @pixelinit == 54 ) complex pix = 1 / ( #pixel * cos( #pixel )) elseif ( @pixelinit == 55 ) complex pix = 1 / ( #pixel * sin( #pixel )) elseif ( @pixelinit == 56 ) complex pix = #pixel * sin( #pixel ) elseif ( @pixelinit == 57 ) complex pix = #pixel * cos( #pixel ) elseif ( @pixelinit == 58 ) complex pix = #pixel * tan( #pixel ) elseif ( @pixelinit == 59 ) complex pix = #pixel * cotan( #pixel ) elseif ( @pixelinit == 60 ) complex pix = #pixel /cos( #pixel ) elseif ( @pixelinit == 61 ) complex pix = #pixel /sin( #pixel ) elseif ( @pixelinit == 62 ) complex pix = sin( 1/#pixel ) elseif ( @pixelinit == 63 ) complex pix = cos( 1/#pixel ) elseif ( @pixelinit == 64 ) complex pix = tan( 1/#pixel ) elseif ( @pixelinit == 65 ) complex pix = cotan( 1/#pixel ) elseif ( @pixelinit == 66 ) complex pix = 1/cos( 1/#pixel ) elseif ( @pixelinit == 67 ) complex pix = 1/sin( 1/#pixel ) elseif ( @pixelinit == 68 ) complex pix = cotanh( #pixel ) elseif ( @pixelinit == 69 ) complex pix = 1/cosh( #pixel ) elseif ( @pixelinit == 70 ) complex pix = 1/sinh( #pixel ) elseif ( @pixelinit == 71 ) complex pix = atanh( 1/#pixel ) elseif ( @pixelinit == 72 ) complex pix = acosh( 1/#pixel ) elseif ( @pixelinit == 73 ) complex pix = asinh( 1/#pixel ) elseif @pixelinit == 74 complex pix = #pixel^@ppower elseif @pixelinit == 75 complex pix = sinh(#pixel) pix = pix * pix elseif @pixelinit == 76 complex pix = cosh( #pixel ) pix = pix * pix elseif @pixelinit == 77 complex pix = tanh(#pixel) pix = pix * pix elseif @pixelinit == 78 complex pix = cotanh( #pixel ) pix = pix * pix elseif @pixelinit == 79 complex pix = 1/cosh(#pixel) pix = pix * pix elseif @pixelinit == 80 complex pix = 1 / sinh( #pixel ) pix = pix * pix elseif @pixelinit == 81 complex pix = sinh(1/#pixel) elseif @pixelinit == 82 complex pix = cosh(1/#pixel) elseif @pixelinit == 83 complex pix = tanh(1/#pixel) elseif @pixelinit == 84 complex pix = cotanh(1/#pixel) elseif @pixelinit == 85 complex pix = 1/cosh(1/#pixel) elseif @pixelinit == 86 complex pix = 1/sinh(1/#pixel) elseif @pixelinit == 87 complex pix = sin( #pixel ) * tan(#pixel) elseif @pixelinit == 88 complex pix = sinh(#pixel) * tanh(#pixel) elseif @pixelinit == 89 complex pix = sinh(#pixel) * cosh(#pixel) elseif @pixelinit == 90 complex pix = sinh(#pixel), zscratch = cosh(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 91 complex pix = sin(#pixel), zscratch = cos(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 92 complex pix = 1/#pixel pix = sin(pix)*cos(pix) elseif @pixelinit == 93 complex pix = sin( 1/#pixel ) pix = pix*pix elseif @pixelinit == 94 complex pix = sin(#pixel) * cos(1/#pixel) elseif @pixelinit == 95 complex pix = sin(#pixel) * sin(1/#pixel) elseif @pixelinit == 96 complex pix = log(#pixel) pix = pix*pix elseif @pixelinit == 97 complex pix = sin(#pixel) * sin(2*#pixel) elseif @pixelinit == 98 complex pix = exp(2*#pixel) elseif @pixelinit == 99 complex pix = exp(-2*#pixel) elseif @pixelinit == 100 complex pix = 1/#pixel pix = sinh(pix)*cosh(pix) elseif @pixelinit == 101 complex pix = sinh( 1/#pixel ) pix = pix*pix elseif @pixelinit == 102 complex pix = sinh(#pixel) * cosh(1/#pixel) elseif @pixelinit == 103 complex pix = sinh(#pixel) * sinh(1/#pixel) elseif @pixelinit == 104 complex pix = sin(#pixel) * sinh(#pixel) elseif @pixelinit == 105 complex pix = sin(#pixel) * cosh(#pixel) elseif @pixelinit == 106 complex pix = sin(#pixel), zscratch = sinh(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 107 complex pix = sin(#pixel)*exp(#pixel) elseif @pixelinit == 108 complex pix = cos(#pixel)*exp(#pixel) elseif @pixelinit == 109 complex pix = sinh(#pixel)*exp(#pixel) elseif @pixelinit == 110 complex pix = cosh(#pixel)*exp(#pixel) elseif @pixelinit == 111 complex pix = sin(#pixel)*log(#pixel) elseif @pixelinit == 112 complex pix = cos(#pixel)*log(#pixel) elseif @pixelinit == 113 complex pix = sinh(#pixel)*log(#pixel) else ; @pixelinit == 114 complex pix = cosh(#pixel)*log(#pixel) endif ; pixelinit loop: iter = iter + 1 if ( iter > @skip ) && ( iter <= watch ) if ( @initialization == 0 ) ztemp = #z elseif ( @initialization == 1 ) ztemp = 1/#z elseif ( @initialization == 2 ) ztemp = #z * #z elseif ( @initialization == 3 ) ztemp = 1 / ( #z * #z ) elseif ( @initialization == 4 ) ztemp = log(#z) elseif ( @initialization == 5 ) ztemp = exp( #z) elseif ( @initialization == 6 ) ztemp = #z^#z elseif ( @initialization == 7 ) ztemp = sin( #z ) elseif ( @initialization == 8 ) ztemp = cos( #z ) elseif ( @initialization == 9 ) ztemp = tan( #z ) elseif ( @initialization == 10 ) ztemp = asin( #z ) elseif ( @initialization == 11 ) ztemp = acos( #z ) elseif ( @initialization == 12 ) ztemp = atan( #z ) elseif ( @initialization == 13 ) ztemp = sinh( #z ) elseif ( @initialization == 14 ) ztemp = cosh( #z ) elseif ( @initialization == 15 ) ztemp = tanh( #z ) elseif ( @initialization == 16 ) ztemp = asinh( #z ) elseif ( @initialization == 17 ) ztemp = acosh( #z ) elseif ( @initialization == 18 ) ztemp = atanh( #z ) elseif ( @initialization == 19 ) ztemp = log( 1/#z ) elseif ( @initialization == 20 ) ztemp = log( log( #z )) elseif ( @initialization == 21 ) ztemp = exp( -#z ) elseif ( @initialization == 22 ) ztemp = exp( 1/#z ) elseif ( @initialization == 23 ) ztemp = #z^(-#z) elseif ( @initialization == 24 ) ztemp = sin( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 25 ) ztemp = cos( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 26 ) ztemp = tan( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 27 ) ztemp = cotan( #z ) elseif ( @initialization == 28 ) ztemp = 1/cos( #z ) elseif ( @initialization == 29 ) ztemp = 1/sin( #z ) elseif ( @initialization == 30 ) ztemp = cotan( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 31 ) ztemp = 1/cos( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 32 ) ztemp = 1/sin( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 33 ) ztemp = #z^(#z) ztemp = #z^ztemp elseif ( @initialization == 34 ) ztemp = #z^(#z) ztemp = 1/( #z^ztemp ) elseif ( @initialization == 35 ) ztemp = log(-#z) elseif ( @initialization == 36 ) ztemp = 1/log( #z ) elseif ( @initialization == 37 ) ztemp = #z * log( #z ) elseif ( @initialization == 38 ) ztemp = sin( #z ) / #z elseif ( @initialization == 39 ) ztemp = cos( #z ) / #z elseif ( @initialization == 40 ) ztemp = sin( #z ) * cos( #z ) elseif ( @initialization == 41 ) ztemp = sin( #z^2 ) elseif ( @initialization == 42 ) ztemp = exp( -1/#z ) elseif ( @initialization == 43 ) ztemp = #z * exp( #z ) elseif ( @initialization == 44 ) ztemp = #z * exp( -#z ) elseif ( @initialization == 45 ) ztemp = #z * exp( 1/#z ) elseif ( @initialization == 46 ) ztemp = #z * exp( -1/#z ) elseif ( @initialization == 47 ) ztemp = #z * #z * #z elseif ( @initialization == 48 ) ztemp = 1 / ( #z * #z * #z ) elseif ( @initialization == 49 ) ztemp = atan( 1 / #z ) elseif ( @initialization == 50 ) ztemp = acos( 1 / #z ) elseif ( @initialization == 51 ) ztemp = asin( 1 / #z ) elseif ( @initialization == 52 ) ztemp = tan( #z ) / #z elseif ( @initialization == 53 ) ztemp = cotan( #z ) / #z elseif ( @initialization == 54 ) ztemp = 1 / ( #z * cos( #z )) elseif ( @initialization == 55 ) ztemp = 1 / ( #z * sin( #z )) elseif ( @initialization == 56 ) ztemp = #z * sin( #z ) elseif ( @initialization == 57 ) ztemp = #z * cos( #z ) elseif ( @initialization == 58 ) ztemp = #z * tan( #z ) elseif ( @initialization == 59 ) ztemp = #z * cotan( #z ) elseif ( @initialization == 60 ) ztemp = #z/cos( #z ) elseif ( @initialization == 61 ) ztemp = #z/sin( #z ) elseif ( @initialization == 62 ) ztemp = sin( 1/#z ) elseif ( @initialization == 63 ) ztemp = cos( 1/#z ) elseif ( @initialization == 64 ) ztemp = tan( 1/#z ) elseif ( @initialization == 65 ) ztemp = cotan( 1/#z ) elseif ( @initialization == 66 ) ztemp = 1/cos( 1/#z ) elseif ( @initialization == 67 ) ztemp = 1/sin( 1/#z ) elseif ( @initialization == 68 ) ztemp = cotanh( #z ) elseif ( @initialization == 69 ) ztemp = 1/cosh( #z ) elseif ( @initialization == 70 ) ztemp = 1/sinh( #z ) elseif ( @initialization == 71 ) ztemp = atanh( 1/#z ) elseif ( @initialization == 72 ) ztemp = acosh( 1/#z ) elseif ( @initialization == 73 ) ztemp = asinh( 1/#z ) elseif @initialization == 74 ztemp = #z^@zpower elseif @initialization == 75 ztemp = sinh(#z) ztemp = ztemp * ztemp elseif @initialization == 76 ztemp = cosh( #z ) ztemp = ztemp * ztemp elseif @initialization == 77 ztemp = tanh(#z) ztemp = ztemp * ztemp elseif @initialization == 78 ztemp = cotanh( #z ) ztemp = ztemp * ztemp elseif @initialization == 79 ztemp = 1/cosh(#z) ztemp = ztemp * ztemp elseif @initialization == 80 ztemp = 1 / sinh( #z ) ztemp = ztemp * ztemp elseif @initialization == 81 ztemp = sinh(1/#z) elseif @initialization == 82 ztemp = cosh(1/#z) elseif @initialization == 83 ztemp = tanh(1/#z) elseif @initialization == 84 ztemp = cotanh(1/#z) elseif @initialization == 85 ztemp = 1/cosh(1/#z) elseif @initialization == 86 ztemp = 1/sinh(1/#z) elseif @initialization == 87 ztemp = sin( #z ) * tan(#z) elseif @initialization == 88 ztemp = sinh(#z) * tanh(#z) elseif @initialization == 89 ztemp = sinh(#z) * cosh(#z) elseif @initialization == 90 ztemp = sinh(#z), zscratch = cosh(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 91 ztemp = sin(#z), zscratch = cos(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 92 ztemp = 1/#z ztemp = sin(ztemp)*cos(ztemp) elseif @initialization == 93 ztemp = sin( 1/#z ) ztemp = ztemp*ztemp elseif @initialization == 94 ztemp = sin(#z) * cos(1/#z) elseif @initialization == 95 ztemp = sin(#z) * sin(1/#z) elseif @initialization == 96 ztemp = log(#z) ztemp = ztemp*ztemp elseif @initialization == 97 ztemp = sin(#z) * sin(2*#z) elseif @initialization == 98 ztemp = exp(2*#z) elseif @initialization == 99 ztemp = exp(-2*#z) elseif @initialization == 100 ztemp = 1/#z ztemp = sinh(ztemp)*cosh(ztemp) elseif @initialization == 101 ztemp = sinh( 1/#z ) ztemp = ztemp*ztemp elseif @initialization == 102 ztemp = sinh(#z) * cosh(1/#z) elseif @initialization == 103 ztemp = sinh(#z) * sinh(1/#z) elseif @initialization == 104 ztemp = sin(#z) * sinh(#z) elseif @initialization == 105 ztemp = sin(#z) * cosh(#z) elseif @initialization == 106 ztemp = sin(#z), zscratch = sinh(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 107 ztemp = sin(#z)*exp(#z) elseif @initialization == 108 ztemp = cos(#z)*exp(#z) elseif @initialization == 109 ztemp = sinh(#z)*exp(#z) elseif @initialization == 110 ztemp = cosh(#z)*exp(#z) elseif @initialization == 111 ztemp = sin(#z)*log(#z) elseif @initialization == 112 ztemp = cos(#z)*log(#z) elseif @initialization == 113 ztemp = sinh(#z)*log(#z) else ; @initialization == 114 ztemp = cosh(#z)*log(#z) endif ; initialization if @trapvariant != 0 if @swaporder if @trapvariant == 1 ; flip ztemp = flip(ztemp) elseif @trapvariant == 2 ; conjugate ztemp = conj(ztemp) elseif @trapvariant == 3 ; flip conjugate ztemp = flip(conj(ztemp)) elseif @trapvariant == 4 ; negate ztemp = -ztemp elseif @trapvariant == 5 ; negate flip ztemp = -flip(ztemp) elseif @trapvariant == 6 ; negate conjugate ztemp = -conj(ztemp) elseif @trapvariant == 7 ; negate flip conj = conj flip ztemp = -flip(conj(ztemp)) endif ; trapvariant2 endif ; swaporder endif ; trapvariant1 if @operator != 0 if @operator == 1 ; multiplication ztemp = ztemp * @operatee elseif @operator == 2 ; addition ztemp = ztemp + @operatee elseif @operator == 3 ; subtraction ztemp = ztemp - @operatee elseif @operator == 4 ; division ztemp = ztemp / @operatee elseif @operator == 5 ; exponentiation ztemp = ztemp ^ @operatee elseif @operator == 6 ; subtraction2 ztemp = @operatee - ztemp elseif @operator == 7 ; division2 ztemp = @operatee / ztemp elseif @operator == 8 ; exponential2 ztemp = @operatee ^ ztemp elseif @operator == 9 ; logarithm ztemp = log(ztemp) / log(@operatee) elseif @operator == 10 ; logarithm2 ztemp = log(@operatee) / log(ztemp) endif ; operator2 endif ; operator1 if @trapvariant != 0 if !@swaporder if @trapvariant == 1 ; flip ztemp = flip(ztemp) elseif @trapvariant == 2 ; conjugate ztemp = conj(ztemp) elseif @trapvariant == 3 ; flip conjugate ztemp = flip(conj(ztemp)) elseif @trapvariant == 4 ; negate ztemp = -ztemp elseif @trapvariant == 5 ; negate flip ztemp = -flip(ztemp) elseif @trapvariant == 6 ; negate conjugate ztemp = -conj(ztemp) elseif @trapvariant == 7 ; negate flip conj = conj flip ztemp = -flip(conj(ztemp)) endif ; trapvariant2 endif ; swaporder endif ; trapvariant1 ; center, rotate, scale z ztemp = ztemp - center ztemp = ztemp * exp( flip( rotation )) ztemp = scale * ztemp if @history if @histype == 0 zold = ztemp - zold, ztemp = zold elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold, zold = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold, zold = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp zangle = atan2( ztemp ) if zangle < 0 zangle = zangle + twopi endif ; zangle if @newstyle znewstyle = ztemp else znewstyle = #z endif ; newstyle repeat ; count if ( @hyper == 0 ) ; sinh ztemp = @amplitude * sinh( @frequency * ztemp + pix ) elseif ( @hyper == 1 ) ; cosh ztemp = @amplitude * cosh( @frequency * ztemp + pix ) elseif ( @hyper == 2 ) ; tanh ztemp = @amplitude * tanh( @frequency * ztemp + pix ) elseif ( @hyper == 3 ) ; coth ztemp = @amplitude * cotanh( @frequency * ztemp + pix ) elseif ( @hyper == 4 ) ; sech ztemp = @amplitude / cosh( @frequency * ztemp + pix ) elseif ( @hyper == 5 ) ; csch ztemp = @amplitude / sinh( @frequency * ztemp + pix ) elseif ( @hyper == 6 ) ; sinh2 ztemp = @amplitude * sinh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 7 ) ; cosh2 ztemp = @amplitude * cosh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 8 ) ; tanh2 ztemp = @amplitude * tanh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 9 ) ; coth2 ztemp = @amplitude * cotanh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 10 ) ; sech2 ztemp = @amplitude / cosh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 11 ) ; csch2 ztemp = @amplitude / sinh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 12 ) ; sinhz/z ztemp = @amplitude * sinh( @frequency * ztemp + pix ) / ztemp elseif ( @hyper == 13 ) ; coshz/z ztemp = @amplitude * cosh( @frequency * ztemp + pix ) / ztemp elseif ( @hyper == 14 ) ; tanhz/z ztemp = @amplitude * tanh( @frequency * ztemp + pix ) / ztemp elseif ( @hyper == 15 ) ; cothz/z ztemp = @amplitude * cotanh( @frequency * ztemp + pix ) / ztemp elseif ( @hyper == 16 ) ; sechz/z ztemp = @amplitude / ( ztemp * cosh( @frequency * ztemp + pix )) elseif ( @hyper == 17 ) ; cschz/z ztemp = @amplitude / (ztemp * sinh( @frequency * ztemp + pix )) elseif ( @hyper == 18 ) ; zsinhz ztemp = ztemp * @amplitude * sinh( @frequency * ztemp + pix ) elseif ( @hyper == 19 ) ; zcoshz ztemp = ztemp * @amplitude * cosh( @frequency * ztemp + pix ) elseif ( @hyper == 20 ) ; ztanhz ztemp = ztemp * @amplitude * tanh( @frequency * ztemp + pix ) elseif ( @hyper == 21 ) ; zcothz ztemp = ztemp * @amplitude * cotanh( @frequency * ztemp + pix ) elseif ( @hyper == 22 ) ; zsechz ztemp = ztemp * @amplitude / cosh( @frequency * ztemp + pix ) elseif ( @hyper == 23 ) ; zcschz ztemp = ztemp * @amplitude / sinh( @frequency * ztemp + pix ) elseif ( @hyper == 24 ) ; z2sinhz ztemp = ztemp * ztemp * @amplitude * sinh( @frequency * ztemp + pix ) elseif ( @hyper == 25 ) ; z2coshz ztemp = ztemp * ztemp * @amplitude * cosh( @frequency * ztemp + pix ) elseif ( @hyper == 26 ) ; z2tanhz ztemp = ztemp * ztemp * @amplitude * tanh( @frequency * ztemp + pix ) elseif ( @hyper == 27 ) ; sinhz*coshz ztemp = @amplitude * @amplitude * sinh( @frequency * ztemp + pix ) \ * cosh( @frequency * ztemp + pix ) elseif ( @hyper == 28 ) ; sinh2cosh2 ztemp2 = @amplitude * sinh( @frequency * ztemp + pix ) ztemp2 = ztemp2 * ztemp2 ztemp = @amplitude * cosh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp * ztemp2 elseif ( @hyper == 29 ) ; arcsinh ztemp = @amplitude * asinh( @frequency * ztemp + pix ) elseif ( @hyper == 30 ) ; arccosh ztemp = @amplitude * acosh( @frequency * ztemp + pix ) elseif ( @hyper == 31 ) ; arctanh ztemp = @amplitude * atanh( @frequency * ztemp + pix ) elseif ( @hyper == 32 ) ; arccoth ztemp = @amplitude * atanh( 1/(@frequency * ztemp + pix )) elseif ( @hyper == 33 ) ; arcsech ztemp = @amplitude * acosh( 1/(@frequency * ztemp + pix )) elseif ( @hyper == 34 ) ; arccsch ztemp = @amplitude * asinh( 1/(@frequency * ztemp + pix )) elseif ( @hyper == 35 ) ; arcsinh2 ztemp = @amplitude * asinh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 36 ) ; arccosh2 ztemp = @amplitude * acosh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 37 ) ; arctanh2 ztemp = @amplitude * atanh( @frequency * ztemp + pix ) ztemp = ztemp * ztemp elseif ( @hyper == 38 ) ; arccoth2 ztemp = @amplitude * atanh( 1/(@frequency * ztemp + pix )) ztemp = ztemp * ztemp elseif ( @hyper == 39 ) ; arcsech2 ztemp = @amplitude * acosh( 1/(@frequency * ztemp + pix )) ztemp = ztemp * ztemp elseif ( @hyper == 40 ) ; arccsch2 ztemp = @amplitude * asinh( 1/(@frequency * ztemp + pix )) ztemp = ztemp * ztemp elseif ( @hyper == 41 ) ; zarcsinhz ztemp = ztemp * @amplitude * asinh( @frequency * ztemp + pix ) elseif ( @hyper == 42 ) ; zarccoshz ztemp = ztemp * @amplitude * acosh( @frequency * ztemp + pix ) elseif ( @hyper == 43 ) ; zarctanhz ztemp = ztemp * @amplitude * atanh( @frequency * ztemp + pix ) elseif ( @hyper == 44 ) ; zarccothz ztemp = ztemp * @amplitude * atanh( 1/(@frequency * ztemp + pix )) elseif ( @hyper == 45 ) ; zarcsechz ztemp = ztemp * @amplitude * acosh( 1/(@frequency * ztemp + pix )) elseif ( @hyper == 46 ) ; zarccschz ztemp = ztemp * @amplitude * asinh( 1/(@frequency * ztemp + pix )) elseif ( @hyper == 47 ) ; arcsinhz/z ztemp = @amplitude * asinh( @frequency * ztemp + pix ) / ztemp elseif ( @hyper == 48 ) ; arccoshz/z ztemp = @amplitude * acosh( @frequency * ztemp + pix ) / ztemp elseif ( @hyper == 49 ) ; arctanhz/z ztemp = @amplitude * atanh( @frequency * ztemp + pix ) / ztemp elseif ( @hyper == 50 ) ; arccothz/z ztemp = @amplitude * atanh( 1/(@frequency * ztemp + pix )) / ztemp elseif ( @hyper == 51 ) ; arcsechz/z ztemp = @amplitude * acosh( 1/(@frequency * ztemp + pix )) / ztemp else ; @hyper == 52 ; arccschz/z ztemp = @amplitude * asinh( 1/(@frequency * ztemp + pix )) / ztemp endif ; hyper if @polar ztemp = cabs(ztemp) * exp( flip( zangle )) endif ; @polar if ( @trapmode == 0 ) ; transmogrified trap-modulated #z ztest = cabs( ztemp ) elseif ( @trapmode == 1 ) ; distance between fractal and trap ztest = cabs( #z - ztemp ) elseif ( @trapmode == 2 ) ; difference ztest = cabs( ztemp - #z ) elseif ( @trapmode == 3 ) ; sum ztest = cabs( #z + ztemp ) elseif ( @trapmode == 4 ) ; product ztest = cabs( #z * ztemp ) elseif ( @trapmode == 5 ) ; quotient 1 ztest = cabs( #z / ztemp ) elseif ( @trapmode == 6 ) ; quotient 2 ztest = cabs( ztemp / #z ) elseif ( @trapmode == 7 ) ; power 1 ztest = cabs( #z ^ ztemp ) elseif ( @trapmode == 8 ) ; power 2 ztest = cabs( ztemp ^ #z ) elseif ( @trapmode == 9 ) ; arithmetic mean ztest = cabs( (#z + ztemp)/2 ) elseif ( @trapmode == 10 ) ; geometric mean ztest = cabs( sqrt(#z * ztemp) ) elseif ( @trapmode == 11 ) ; angle 1 ztest = #pi + atan2( ztemp ) elseif ( @trapmode == 12 ) ; angle 2 ztest = #pi + atan2( #z - ztemp ) elseif ( @trapmode == 13 ) ; angle 3 ztest = #pi + atan2( #z + ztemp ) elseif ( @trapmode == 14 ) ; angle 4 ztest = #pi + atan2( #z * ztemp ) elseif ( @trapmode == 15 ) ; angle 5 ztest = #pi + atan2( #z / ztemp ) elseif ( @trapmode == 16 ) ; angle 6 ztest = #pi + atan2( ztemp / #z ) elseif ( @trapmode == 17 ) ; angle 7 ztest = #pi + atan2( #z ^ ztemp ) elseif ( @trapmode == 18 ) ; angle 8 ztest = #pi + atan2( ztemp ^ #z ) elseif ( @trapmode == 19 ) ; real 1 ztest = abs( real( ztemp )) elseif ( @trapmode == 20 ) ; real 2 ztest = abs( real( #z - ztemp )) elseif ( @trapmode == 21 ) ; real 3 ztest = abs( real( #z + ztemp )) elseif ( @trapmode == 22 ) ; real 4 ztest = abs( real( #z * ztemp )) elseif ( @trapmode == 23 ) ; real 5 ztest = abs( real( #z / ztemp )) elseif ( @trapmode == 24 ) ; real 6 ztest = abs( real( ztemp / #z )) elseif ( @trapmode == 25 ) ; real 7 ztest = abs( real( #z ^ ztemp )) elseif ( @trapmode == 26 ) ; real 8 ztest = abs( real( ztemp ^ #z )) elseif ( @trapmode == 27 ) ; imag 1 ztest = abs( imag( ztemp )) elseif ( @trapmode == 28 ) ; imag 2 ztest = abs( imag( #z - ztemp )) elseif ( @trapmode == 29 ) ; imag 3 ztest = abs( imag( #z + ztemp )) elseif ( @trapmode == 30 ) ; imag 4 ztest = abs( imag( #z * ztemp )) elseif ( @trapmode == 31 ) ; imag 5 ztest = abs( imag( #z / ztemp )) elseif ( @trapmode == 32 ) ; imag 6 ztest = abs( imag( ztemp / #z )) elseif ( @trapmode == 33 ) ; imag 7 ztest = abs( imag( #z ^ ztemp )) else ; @trapmode == 34 --- imag 8 ztest = abs( imag( ztemp ^ #z )) endif ; trapmode ; Save value for later turbulence tlast = ztest if ( @whattotrap == 0 ) ; minimum if ( ztest < ztesttrapped ) ztesttrapped = ztest ztrapped = #z ztemptrapped = ztemp itertrapped = iter endif ; ztest elseif ( @whattotrap == 1 ) ; maximum if ( ztest > ztesttrapped ) ztesttrapped = ztest ztrapped = #z ztemptrapped = ztemp itertrapped = iter endif ; ztest elseif ( @whattotrap == 2 ) ; average ztesttrapped = ztest + ztesttrapped itercount = itercount + 1 ztrapped = #z ; this will not be an accurate mode ztemptrapped = ztemp ; this will not be an accurate mode itertrapped = iter ; this will not be an accurate mode elseif ( @whattotrap == 3 ) ; 2nd minimum if ( ztest < ztesttrapped ) ; found a new minimum z2testtrapped = ztesttrapped ; store 2nd minimum ztesttrapped = ztest ; and store new minimum z2trapped = ztrapped ztrapped = #z z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 4 ) ; 2nd maximum if ( ztest > ztesttrapped ) z2testtrapped = ztesttrapped ztesttrapped = ztest z2trapped = ztrapped ztrapped = #z z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 5 ) ; avg. of min & 2nd min values if ( ztest < ztesttrapped ) ; found a new minimum z2testtrapped = ztesttrapped ; store 2nd minimum ztesttrapped = ztest ; and store new minimum z2trapped = ztrapped ztrapped = #z z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 6 ) ; avg. of max & 2nd max values if ( ztest > ztesttrapped ) ; found a new maximum z2testtrapped = ztesttrapped ; store 2nd maximum ztesttrapped = ztest ; and store new maximum z2trapped = ztrapped ztrapped = #z z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 7 ) ; first trap iteration if ( itertrapped == 0 ) ; nothing trapped yet, so this must be the first itertrapped = iter ztesttrapped = ztest ztrapped = #z ztemptrapped = ztemp endif ; itertrapped elseif ( @whattotrap == 8 ) ; last trap iteration; store each one in turn itertrapped = iter ztesttrapped = ztest ztrapped = #z ztemptrapped = ztemp elseif ( @whattotrap == 9 ) ; first threshold if ( itertrapped == 0 ) ; only trapping the first iteration that crosses threshold if ( ztest < @threshold ) ; if so, trap it if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; itertrapped elseif ( @whattotrap == 10 ) ; last threshold --- just store them all if ( ztest < @threshold ) ; if so, trap it if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest elseif @whattotrap == 11 ; threshold count, but store last value if ( ztest < @threshold ) ; if so, trap it threshcount = threshcount + 1 if !@ringstyle itertrapped = threshcount * iter ztesttrapped = threshcount * ztest ztrapped = threshcount * znewstyle ztemptrapped = threshcount * ztemp elseif ztest > innerradius itertrapped = threshcount * iter ztesttrapped = threshcount * ztest ztrapped = threshcount * znewstyle ztemptrapped = threshcount * ztemp endif ; ringstyle endif ; ztest elseif ( @whattotrap == 12 ) ; 2nd to dip below threshold value if ( ztest < @threshold ) if ( itertrapped == 0 ) ; nothing trapped yet, set flag for next time itertrapped = -1 elseif itertrapped == -1 ; must be the 2nd threshold value if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; itertrapped endif ; test elseif ( @whattotrap == 13 ) ; 1st to exceed threshold limit if ( itertrapped == 0 ) ; nothing trapped yet if ( ztest > @threshold ) if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius for limits itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; itertrapped elseif ( @whattotrap == 14 ) ; 2nd to exceed threshold limit if ( ztest > @threshold ) if ( itertrapped == 0 ) ; nothing trapped yet, set flag for next time itertrapped = -1 elseif itertrapped == -1 ; must be the 2nd threshold value if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; itertrapped endif ; test elseif ( @whattotrap == 15 ) ; last to exceed threshold --- just store them all if ( ztest > @threshold ) if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius for limits itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; whattotrap count = count - 1 until ( count < 1 ) endif ; iter final: if ( itertrapped != 0 ) ; something has been trapped if ( @whattotrap == 2 ) ; calculate the average ztesttrapped = ztesttrapped / itercount elseif ( ( @whattotrap == 3 ) || ( @whattotrap == 4 ) ) ; we need to plot ; 2nd min/max, so switch ztesttrapped = z2testtrapped ztrapped = z2trapped ztemptrapped = z2temptrapped itertrapped = iter2trapped elseif ( ( @whattotrap == 5 ) || ( @whattotrap == 6 ) ) ; we need to average ztesttrapped = ( ztesttrapped + z2testtrapped ) / 2 ztrapped = ( ztrapped + z2trapped ) / 2 scratch = ( itertrapped + iter2trapped ) / 2.0 itertrapped = round( scratch ) endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; iteration _colorindex = @colorspread * itertrapped _color = _colorindex / #maxiter elseif ( @colorby == 1 ) ; test magnitude _color = @colorspread * ztesttrapped elseif ( @colorby == 2 ) ; distance _color = @colorspread * cabs( ztrapped - ztemptrapped ) elseif ( @colorby == 3 ) ; angle _colorindex = atan2( ztrapped ) + #pi _color = @colorspread * _colorindex elseif ( @colorby == 4 ) ; modulated angle _color = @colorspread * ( #pi + atan2( ztemptrapped )) elseif ( @colorby == 5 ) ; angle of difference _color = @colorspread * ( #pi + atan2( ztrapped - ztemptrapped )) elseif ( @colorby == 6 ) ; zmag _color = @colorspread * cabs( ztrapped ) elseif ( @colorby == 7 ) ; modulated zmag _color = @colorspread * cabs( ztemptrapped ) endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else _color = ((_color + _coloradjust) + ( itertrapped % @ranges )) / @ranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else if ( @solid ) #solid = true else #index = 0.98 + _coloradjust endif ; solid endif ; itertrapped default: title = "Hip" param hyper caption = "Trap Function" enum = "sinh" "cosh" "tanh" "cotanh" "sech" "cosech" \ "sinh^2" "cosh^2" "tanh^2" "cotanh^2" "sech^2" "cosech^2" "sinh(z)/z" \ "cosh(z)/z" "tanh(z)/z" "coth(z)/z" "sech(z)/z" "csch(z)/z" \ "zsinh(z)" "zcosh(z)" "ztanh(z)" "zcoth(z)" "zsech(z)" "zcsch(z)" \ "z^2 sinh(z)" "z^2 cosh(z)" "z^2 tanh(z)" "sinh(z)cosh(z)" \ "sinh^2(z)cosh^2(z)" "arcsinh" "arccosh" "arctanh" "arccoth" "arcsech" \ "arccsch" "arcsinh^2" "arccosh^2" "arctanh^2" "arccoth^2" "arcsech^2" \ "arccsch^2" "zarcsinh(z)" "zarccosh(z)" "zarctanh(z)" "zarccoth(z)" \ "zarcsech(z)" "zarccsch(z)" "arcsinh(z)/z" "arccosh(z)/z" \ "arctanh(z)/z" "arccoth(z)/z" "arcsech(z)/z" "arccsch(z)/z" default = 0 hint = "Select primary trap function" endparam param trapmode caption = "Flavor" enum = "modulation" "distance" "difference" "sum" "product" "quotient 1" \ "quotient 2" "power 1" "power 2" "arith. mean" "geom. mean" "angle 1" \ "angle 2" "angle 3" "angle 4" "angle 5" "angle 6" "angle 7" "angle 8" \ "real 1" "real 2" "real 3" "real 4" "real 5" "real 6" "real 7" "real 8" \ "imag 1" "imag 2" "imag 3" "imag 4" "imag 5" "imag 6" "imag 7" "imag 8" default = 0 hint = "The trap mode. The 'Watch What?' comparison is based on this mode" endparam param whattotrap caption = "Watch What?" enum = "minimum" "maximum" "average" "2nd minimum" "2nd maximum" \ "min2 avg" "max2 avg" "first" "last" "threshold" "last threshold" \ "threshold count" "2nd threshold" "1st limit" "2nd limit" "last limit" default = 0 hint = "What value should be examined for trapping? The 'Flavor' value is \ trapped using this criterion. If 'Watch What?' = [first] 'threshold', \ 'last threshold', or 'threshold count', parameter 'Threshold' may be adjusted" 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to input to the trap function loop" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" endparam param @colorby caption = "Color By" enum = "iteration" "magnitude" "distance" "angle" "modulated angle" \ "difference angle" "z magnitude" "modulated magnitude" default = 0 hint = "Criterion for computing color index. For selections other than 'iteration', parameter 'Color Spread' may need to be drastically lowered!" endparam param @colorspread caption = "Color Spread" default = 6.0 hint = "This value can be used to expand/contract the range of colors. For 'Color By?' modes other than 'iteration', this value may need to be reduced significantly (~0.1-0.3 or so)." endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the trap function should be rotated from \ its default position" endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of trap function center/origin" endparam param tscale caption = "Scale" default = 1.0 min = 0.0 hint = "This parameter determines the size of the trap function" endparam param pixelinit caption = "Pixel Initialization" enum = "p" "1/p" "p^2" "1/p^2" "log(p)" "e^p" "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" \ "1/p^3" "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" \ "sec(p)/p" "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" \ "psec(p)" "pcsc(p)" "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" \ "sec(1/p)" "csc(1/p)" "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" \ "asech(p)" "acosech(p)" "p^power" \ "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "The trap loop utilizes this initialized pixel value; p = #pixel" endparam param ppower caption = "Pixel Power" default = (0,1) hint = "Pixel exponent if param 'Pixel Initialization' is set to 'p^power'" endparam param frequency caption = "Frequency" default = (-1,5) hint = "Sets the frequency of the trap function" endparam param amplitude caption = "Amplitude" default = (0.5,4) hint = "Sets the height of the trap function" endparam param threshold caption = "Threshold" default = 0.20 hint = "This parameter sets the maximum value that will be trapped if 'Watch What?' is set \ to 'threshold', and the minimum value that will be trapped if 'Watch What?' is set \ to 'limit'" endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Watch What' is set to one \ of the 'Threshold' or 'Limit' options, then Threshold becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Watch What' is set to a 'Threshold' \ or 'Limit' option, this parameter determines the width of the ring trap" endparam param iterations caption = "Trap Iterations" default = 1 min = 1 hint = "The number of times the trap function will loop for each fractal iteration" endparam param skip caption = "Iterations to Skip" default = 0 min = 0 hint = "The number of fractal iterations to skip before starting to trap z" 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" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" endparam param cpower caption = "Color Power" default = 0.25 hint = "Color index exponent if param 'Color Warp Factor' is set to 'c^power'" endparam param newstyle caption = "New Style Trapping?" default = FALSE hint = "If enabled, compares trapped value with initialized z rather \ than #z" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param solid caption = "Solid Background" default = false hint = "Sets non-trapped pixels to the inside solid color" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (fBm) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" 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" endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" endparam } jam-Bubbles7 { ; jam 010726 ; ; Based loosely on Mark Townsends's implementation of ; Paul W. Carlson's MandelBubs1 fomula. This one's not ; so special, but was a great learning exercise! ; Many thanks to all the great formula-writers out there! init: float _colorindex = 0.0, float tempindex = 0.0 float trappedreal = 1.0e20, float trappedimag = 1.0e20 float testreal = 0.0, float testimag = 0.0 float indexfactorr = 191.0/@radiusreal float indexfactori = 63.0/@radiusimag int iter = 0 int trappediterr = 0, int trappediteri = 0 float twopi = 6.28318530717958647692528676655901 loop: iter = iter + 1 testreal = abs(real(#z)), testimag = abs(imag(#z)) if ( testreal < trappedreal ) trappedreal = testreal trappediterr = iter endif ; testreal if ( testimag < trappedimag ) trappedimag = testimag trappediteri = iter endif ; testimag final: if ( trappedreal < @radiusreal ) tempindex = @realscale * indexfactorr * trappediterr endif ; trappedreal if ( trappedimag < @radiusimag ) _colorindex = @imagscale * indexfactori * trappediteri endif ; trappedimag if ( ( trappediterr == 0 ) && ( trappediteri == 0 ) ) if ( @solid ) #solid = true else _colorindex = 255.0 endif ; solid endif ; trappediterr _colorindex = twopi * (((_colorindex + tempindex + 1.0) % 256) / 256.0) #index = abs(real( @ctransform( _colorindex ) ) ) ; if ( _colorindex > 1 ) ; _colorindex = 1 ; elseif ( _colorindex < 0 ) ; _colorindex = 0 ; endif ; _colorindex ; #index = _colorindex default: title = "Bubbles7" param radiusreal caption = "Real Radius" default = 0.15 hint = "Sets the bubble radius in the x-direction" endparam param radiusimag caption = "Imaginary Radius" default = 0.25 hint = "Sets the bubble radius in the y-direction" endparam param realscale caption = "Real Density" default = 1.0 hint = "Can be used to expand the range of colors; use if image is too monotone" endparam param imagscale caption = "Imaginary Density" default = 1.0 hint = "Can be used to expand the range of colors; use if image is too monotone" endparam param solid caption = "Solid Background" default = false hint = "Sets non-trapped pixels to the inside solid color" endparam func ctransform caption = "Color Transform" default = ident() hint = "This function is applied to the color index at the end" endfunc } jam-ExpTraps { ; jam 010809 ; Colorings based on exponential/logarithmic functions used as traps. ; Things that have big effects: Trap Function, Z Initialization, Flavor, ; Watch What, and Color By. init: float _colorindex = 0.0 complex ztemp = (0,0), complex ztrapped = (0,0), complex ztemptrapped = (0,0) complex z2trapped = (0,0), complex z2temptrapped = (0,0) float ztest = 0.0, float z2testtrapped = 0.0, float scratch = 0.0 int iter = 0, int itertrapped = 0, int iter2trapped = 0, int itercount = 0 int count = @iterations int threshcount = 0 float twopi = #pi * 2.0 float scale = @tscale, float rotation = @rotate * #pi / 180, complex center = @centr if rotation < 0 rotation = rotation + twopi endif ; rotation rotation = -rotation ; eliminates negation step during each fractal iteration if @towatch == 0 int watch = #maxiter else int watch = @skip + @towatch endif ; towatch complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex znewstyle = (0,0) float thresh = @threshold, float innerradius = thresh - @ringwidth if ( @whattotrap > 12 ) innerradius = thresh + @ringwidth ; innerradius is really an outerradius if we are exceeding limits endif ; @whattotrap float _color = 0.0 float zangle = 0.0 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, complex zinput = (0,0) complex zlast = (0,0), complex tlast = (1,0), float temp = 0.0, float sign = 0.0 float tempx = 0.0, float tempy = 0.0 if (( @whattotrap == 1 ) || ( @whattotrap == 4 ) || ( @whattotrap == 6 )) ; we will be trapping a maximum rather than a minimum float ztesttrapped = -1.0e20 elseif ( @whattotrap == 2 ) ; average float ztesttrapped = 0 ; this variable will store the running total for computing avg else ; minimum float ztesttrapped = 1.0e20 endif ; whattotrap if ( @pixelinit == 0 ) complex pix = #pixel elseif ( @pixelinit == 1 ) complex pix = 1/#pixel elseif ( @pixelinit == 2 ) complex pix = #pixel * #pixel elseif ( @pixelinit == 3 ) complex pix = 1 / ( #pixel * #pixel ) elseif ( @pixelinit == 4 ) complex pix = log(#pixel) elseif ( @pixelinit == 5 ) complex pix = exp( #pixel) elseif ( @pixelinit == 6 ) complex pix = #pixel^#pixel elseif ( @pixelinit == 7 ) complex pix = sin( #pixel ) elseif ( @pixelinit == 8 ) complex pix = cos( #pixel ) elseif ( @pixelinit == 9 ) complex pix = tan( #pixel ) elseif ( @pixelinit == 10 ) complex pix = asin( #pixel ) elseif ( @pixelinit == 11 ) complex pix = acos( #pixel ) elseif ( @pixelinit == 12 ) complex pix = atan( #pixel ) elseif ( @pixelinit == 13 ) complex pix = sinh( #pixel ) elseif ( @pixelinit == 14 ) complex pix = cosh( #pixel ) elseif ( @pixelinit == 15 ) complex pix = tanh( #pixel ) elseif ( @pixelinit == 16 ) complex pix = asinh( #pixel ) elseif ( @pixelinit == 17 ) complex pix = acosh( #pixel ) elseif ( @pixelinit == 18 ) complex pix = atanh( #pixel ) elseif ( @pixelinit == 19 ) complex pix = log( 1/#pixel ) elseif ( @pixelinit == 20 ) complex pix = log( log( #pixel )) elseif ( @pixelinit == 21 ) complex pix = exp( -#pixel ) elseif ( @pixelinit == 22 ) complex pix = exp( 1/#pixel ) elseif ( @pixelinit == 23 ) complex pix = #pixel^(-#pixel) elseif ( @pixelinit == 24 ) complex pix = sin( #pixel ) pix = pix * pix elseif ( @pixelinit == 25 ) complex pix = cos( #pixel ) pix = pix * pix elseif ( @pixelinit == 26 ) complex pix = tan( #pixel ) pix = pix * pix elseif ( @pixelinit == 27 ) complex pix = cotan( #pixel ) elseif ( @pixelinit == 28 ) complex pix = 1/cos( #pixel ) elseif ( @pixelinit == 29 ) complex pix = 1/sin( #pixel ) elseif ( @pixelinit == 30 ) complex pix = cotan( #pixel ) pix = pix * pix elseif ( @pixelinit == 31 ) complex pix = 1/cos( #pixel ) pix = pix * pix elseif ( @pixelinit == 32 ) complex pix = 1/sin( #pixel ) pix = pix * pix elseif ( @pixelinit == 33 ) complex pix = #pixel^(#pixel) pix = #pixel^pix elseif ( @pixelinit == 34 ) complex pix = #pixel^(#pixel) pix = 1/( #pixel^pix ) elseif ( @pixelinit == 35 ) complex pix = log(-#pixel) elseif ( @pixelinit == 36 ) complex pix = 1/log( #pixel ) elseif ( @pixelinit == 37 ) complex pix = #pixel * log( #pixel ) elseif ( @pixelinit == 38 ) complex pix = sin( #pixel ) / #pixel elseif ( @pixelinit == 39 ) complex pix = cos( #pixel ) / #pixel elseif ( @pixelinit == 40 ) complex pix = sin( #pixel ) * cos( #pixel ) elseif ( @pixelinit == 41 ) complex pix = sin( #pixel^2 ) elseif ( @pixelinit == 42 ) complex pix = exp( -1/#pixel ) elseif ( @pixelinit == 43 ) complex pix = #pixel * exp( #pixel ) elseif ( @pixelinit == 44 ) complex pix = #pixel * exp( -#pixel ) elseif ( @pixelinit == 45 ) complex pix = #pixel * exp( 1/#pixel ) elseif ( @pixelinit == 46 ) complex pix = #pixel * exp( -1/#pixel ) elseif ( @pixelinit == 47 ) complex pix = #pixel * #pixel * #pixel elseif ( @pixelinit == 48 ) complex pix = 1 / ( #pixel * #pixel * #pixel ) elseif ( @pixelinit == 49 ) complex pix = atan( 1 / #pixel ) elseif ( @pixelinit == 50 ) complex pix = acos( 1 / #pixel ) elseif ( @pixelinit == 51 ) complex pix = asin( 1 / #pixel ) elseif ( @pixelinit == 52 ) complex pix = tan( #pixel ) / #pixel elseif ( @pixelinit == 53 ) complex pix = cotan( #pixel ) / #pixel elseif ( @pixelinit == 54 ) complex pix = 1 / ( #pixel * cos( #pixel )) elseif ( @pixelinit == 55 ) complex pix = 1 / ( #pixel * sin( #pixel )) elseif ( @pixelinit == 56 ) complex pix = #pixel * sin( #pixel ) elseif ( @pixelinit == 57 ) complex pix = #pixel * cos( #pixel ) elseif ( @pixelinit == 58 ) complex pix = #pixel * tan( #pixel ) elseif ( @pixelinit == 59 ) complex pix = #pixel * cotan( #pixel ) elseif ( @pixelinit == 60 ) complex pix = #pixel /cos( #pixel ) elseif ( @pixelinit == 61 ) complex pix = #pixel /sin( #pixel ) elseif ( @pixelinit == 62 ) complex pix = sin( 1/#pixel ) elseif ( @pixelinit == 63 ) complex pix = cos( 1/#pixel ) elseif ( @pixelinit == 64 ) complex pix = tan( 1/#pixel ) elseif ( @pixelinit == 65 ) complex pix = cotan( 1/#pixel ) elseif ( @pixelinit == 66 ) complex pix = 1/cos( 1/#pixel ) elseif ( @pixelinit == 67 ) complex pix = 1/sin( 1/#pixel ) elseif ( @pixelinit == 68 ) complex pix = cotanh( #pixel ) elseif ( @pixelinit == 69 ) complex pix = 1/cosh( #pixel ) elseif ( @pixelinit == 70 ) complex pix = 1/sinh( #pixel ) elseif ( @pixelinit == 71 ) complex pix = atanh( 1/#pixel ) elseif ( @pixelinit == 72 ) complex pix = acosh( 1/#pixel ) elseif ( @pixelinit == 73 ) complex pix = asinh( 1/#pixel ) elseif @pixelinit == 74 complex pix = #pixel^@ppower elseif @pixelinit == 75 complex pix = sinh(#pixel) pix = pix * pix elseif @pixelinit == 76 complex pix = cosh( #pixel ) pix = pix * pix elseif @pixelinit == 77 complex pix = tanh(#pixel) pix = pix * pix elseif @pixelinit == 78 complex pix = cotanh( #pixel ) pix = pix * pix elseif @pixelinit == 79 complex pix = 1/cosh(#pixel) pix = pix * pix elseif @pixelinit == 80 complex pix = 1 / sinh( #pixel ) pix = pix * pix elseif @pixelinit == 81 complex pix = sinh(1/#pixel) elseif @pixelinit == 82 complex pix = cosh(1/#pixel) elseif @pixelinit == 83 complex pix = tanh(1/#pixel) elseif @pixelinit == 84 complex pix = cotanh(1/#pixel) elseif @pixelinit == 85 complex pix = 1/cosh(1/#pixel) elseif @pixelinit == 86 complex pix = 1/sinh(1/#pixel) elseif @pixelinit == 87 complex pix = sin( #pixel ) * tan(#pixel) elseif @pixelinit == 88 complex pix = sinh(#pixel) * tanh(#pixel) elseif @pixelinit == 89 complex pix = sinh(#pixel) * cosh(#pixel) elseif @pixelinit == 90 complex pix = sinh(#pixel), zscratch = cosh(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 91 complex pix = sin(#pixel), zscratch = cos(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 92 complex pix = 1/#pixel pix = sin(pix)*cos(pix) elseif @pixelinit == 93 complex pix = sin( 1/#pixel ) pix = pix*pix elseif @pixelinit == 94 complex pix = sin(#pixel) * cos(1/#pixel) elseif @pixelinit == 95 complex pix = sin(#pixel) * sin(1/#pixel) elseif @pixelinit == 96 complex pix = log(#pixel) pix = pix*pix elseif @pixelinit == 97 complex pix = sin(#pixel) * sin(2*#pixel) elseif @pixelinit == 98 complex pix = exp(2*#pixel) elseif @pixelinit == 99 complex pix = exp(-2*#pixel) elseif @pixelinit == 100 complex pix = 1/#pixel pix = sinh(pix)*cosh(pix) elseif @pixelinit == 101 complex pix = sinh( 1/#pixel ) pix = pix*pix elseif @pixelinit == 102 complex pix = sinh(#pixel) * cosh(1/#pixel) elseif @pixelinit == 103 complex pix = sinh(#pixel) * sinh(1/#pixel) elseif @pixelinit == 104 complex pix = sin(#pixel) * sinh(#pixel) elseif @pixelinit == 105 complex pix = sin(#pixel) * cosh(#pixel) elseif @pixelinit == 106 complex pix = sin(#pixel), zscratch = sinh(#pixel) pix = pix*pix*zscratch*zscratch elseif @pixelinit == 107 complex pix = sin(#pixel)*exp(#pixel) elseif @pixelinit == 108 complex pix = cos(#pixel)*exp(#pixel) elseif @pixelinit == 109 complex pix = sinh(#pixel)*exp(#pixel) elseif @pixelinit == 110 complex pix = cosh(#pixel)*exp(#pixel) elseif @pixelinit == 111 complex pix = sin(#pixel)*log(#pixel) elseif @pixelinit == 112 complex pix = cos(#pixel)*log(#pixel) elseif @pixelinit == 113 complex pix = sinh(#pixel)*log(#pixel) else ; @pixelinit == 114 complex pix = cosh(#pixel)*log(#pixel) endif ; pixelinit loop: iter = iter + 1 if ( iter > @skip ) && ( iter <= watch ) if ( @initialization == 0 ) ztemp = #z elseif ( @initialization == 1 ) ztemp = 1/#z elseif ( @initialization == 2 ) ztemp = #z * #z elseif ( @initialization == 3 ) ztemp = 1 / ( #z * #z ) elseif ( @initialization == 4 ) ztemp = log(#z) elseif ( @initialization == 5 ) ztemp = exp( #z) elseif ( @initialization == 6 ) ztemp = #z^#z elseif ( @initialization == 7 ) ztemp = sin( #z ) elseif ( @initialization == 8 ) ztemp = cos( #z ) elseif ( @initialization == 9 ) ztemp = tan( #z ) elseif ( @initialization == 10 ) ztemp = asin( #z ) elseif ( @initialization == 11 ) ztemp = acos( #z ) elseif ( @initialization == 12 ) ztemp = atan( #z ) elseif ( @initialization == 13 ) ztemp = sinh( #z ) elseif ( @initialization == 14 ) ztemp = cosh( #z ) elseif ( @initialization == 15 ) ztemp = tanh( #z ) elseif ( @initialization == 16 ) ztemp = asinh( #z ) elseif ( @initialization == 17 ) ztemp = acosh( #z ) elseif ( @initialization == 18 ) ztemp = atanh( #z ) elseif ( @initialization == 19 ) ztemp = log( 1/#z ) elseif ( @initialization == 20 ) ztemp = log( log( #z )) elseif ( @initialization == 21 ) ztemp = exp( -#z ) elseif ( @initialization == 22 ) ztemp = exp( 1/#z ) elseif ( @initialization == 23 ) ztemp = #z^(-#z) elseif ( @initialization == 24 ) ztemp = sin( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 25 ) ztemp = cos( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 26 ) ztemp = tan( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 27 ) ztemp = cotan( #z ) elseif ( @initialization == 28 ) ztemp = 1/cos( #z ) elseif ( @initialization == 29 ) ztemp = 1/sin( #z ) elseif ( @initialization == 30 ) ztemp = cotan( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 31 ) ztemp = 1/cos( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 32 ) ztemp = 1/sin( #z ) ztemp = ztemp * ztemp elseif ( @initialization == 33 ) ztemp = #z^(#z) ztemp = #z^ztemp elseif ( @initialization == 34 ) ztemp = #z^(#z) ztemp = 1/( #z^ztemp ) elseif ( @initialization == 35 ) ztemp = log(-#z) elseif ( @initialization == 36 ) ztemp = 1/log( #z ) elseif ( @initialization == 37 ) ztemp = #z * log( #z ) elseif ( @initialization == 38 ) ztemp = sin( #z ) / #z elseif ( @initialization == 39 ) ztemp = cos( #z ) / #z elseif ( @initialization == 40 ) ztemp = sin( #z ) * cos( #z ) elseif ( @initialization == 41 ) ztemp = sin( #z^2 ) elseif ( @initialization == 42 ) ztemp = exp( -1/#z ) elseif ( @initialization == 43 ) ztemp = #z * exp( #z ) elseif ( @initialization == 44 ) ztemp = #z * exp( -#z ) elseif ( @initialization == 45 ) ztemp = #z * exp( 1/#z ) elseif ( @initialization == 46 ) ztemp = #z * exp( -1/#z ) elseif ( @initialization == 47 ) ztemp = #z * #z * #z elseif ( @initialization == 48 ) ztemp = 1 / ( #z * #z * #z ) elseif ( @initialization == 49 ) ztemp = atan( 1 / #z ) elseif ( @initialization == 50 ) ztemp = acos( 1 / #z ) elseif ( @initialization == 51 ) ztemp = asin( 1 / #z ) elseif ( @initialization == 52 ) ztemp = tan( #z ) / #z elseif ( @initialization == 53 ) ztemp = cotan( #z ) / #z elseif ( @initialization == 54 ) ztemp = 1 / ( #z * cos( #z )) elseif ( @initialization == 55 ) ztemp = 1 / ( #z * sin( #z )) elseif ( @initialization == 56 ) ztemp = #z * sin( #z ) elseif ( @initialization == 57 ) ztemp = #z * cos( #z ) elseif ( @initialization == 58 ) ztemp = #z * tan( #z ) elseif ( @initialization == 59 ) ztemp = #z * cotan( #z ) elseif ( @initialization == 60 ) ztemp = #z/cos( #z ) elseif ( @initialization == 61 ) ztemp = #z/sin( #z ) elseif ( @initialization == 62 ) ztemp = sin( 1/#z ) elseif ( @initialization == 63 ) ztemp = cos( 1/#z ) elseif ( @initialization == 64 ) ztemp = tan( 1/#z ) elseif ( @initialization == 65 ) ztemp = cotan( 1/#z ) elseif ( @initialization == 66 ) ztemp = 1/cos( 1/#z ) elseif ( @initialization == 67 ) ztemp = 1/sin( 1/#z ) elseif ( @initialization == 68 ) ztemp = cotanh( #z ) elseif ( @initialization == 69 ) ztemp = 1/cosh( #z ) elseif ( @initialization == 70 ) ztemp = 1/sinh( #z ) elseif ( @initialization == 71 ) ztemp = atanh( 1/#z ) elseif ( @initialization == 72 ) ztemp = acosh( 1/#z ) elseif ( @initialization == 73 ) ztemp = asinh( 1/#z ) elseif @initialization == 74 ztemp = #z^@zpower elseif @initialization == 75 ztemp = sinh(#z) ztemp = ztemp * ztemp elseif @initialization == 76 ztemp = cosh( #z ) ztemp = ztemp * ztemp elseif @initialization == 77 ztemp = tanh(#z) ztemp = ztemp * ztemp elseif @initialization == 78 ztemp = cotanh( #z ) ztemp = ztemp * ztemp elseif @initialization == 79 ztemp = 1/cosh(#z) ztemp = ztemp * ztemp elseif @initialization == 80 ztemp = 1 / sinh( #z ) ztemp = ztemp * ztemp elseif @initialization == 81 ztemp = sinh(1/#z) elseif @initialization == 82 ztemp = cosh(1/#z) elseif @initialization == 83 ztemp = tanh(1/#z) elseif @initialization == 84 ztemp = cotanh(1/#z) elseif @initialization == 85 ztemp = 1/cosh(1/#z) elseif @initialization == 86 ztemp = 1/sinh(1/#z) elseif @initialization == 87 ztemp = sin( #z ) * tan(#z) elseif @initialization == 88 ztemp = sinh(#z) * tanh(#z) elseif @initialization == 89 ztemp = sinh(#z) * cosh(#z) elseif @initialization == 90 ztemp = sinh(#z), zscratch = cosh(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 91 ztemp = sin(#z), zscratch = cos(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 92 ztemp = 1/#z ztemp = sin(ztemp)*cos(ztemp) elseif @initialization == 93 ztemp = sin( 1/#z ) ztemp = ztemp*ztemp elseif @initialization == 94 ztemp = sin(#z) * cos(1/#z) elseif @initialization == 95 ztemp = sin(#z) * sin(1/#z) elseif @initialization == 96 ztemp = log(#z) ztemp = ztemp*ztemp elseif @initialization == 97 ztemp = sin(#z) * sin(2*#z) elseif @initialization == 98 ztemp = exp(2*#z) elseif @initialization == 99 ztemp = exp(-2*#z) elseif @initialization == 100 ztemp = 1/#z ztemp = sinh(ztemp)*cosh(ztemp) elseif @initialization == 101 ztemp = sinh( 1/#z ) ztemp = ztemp*ztemp elseif @initialization == 102 ztemp = sinh(#z) * cosh(1/#z) elseif @initialization == 103 ztemp = sinh(#z) * sinh(1/#z) elseif @initialization == 104 ztemp = sin(#z) * sinh(#z) elseif @initialization == 105 ztemp = sin(#z) * cosh(#z) elseif @initialization == 106 ztemp = sin(#z), zscratch = sinh(#z) ztemp = ztemp*ztemp*zscratch*zscratch elseif @initialization == 107 ztemp = sin(#z)*exp(#z) elseif @initialization == 108 ztemp = cos(#z)*exp(#z) elseif @initialization == 109 ztemp = sinh(#z)*exp(#z) elseif @initialization == 110 ztemp = cosh(#z)*exp(#z) elseif @initialization == 111 ztemp = sin(#z)*log(#z) elseif @initialization == 112 ztemp = cos(#z)*log(#z) elseif @initialization == 113 ztemp = sinh(#z)*log(#z) else ; @initialization == 114 ztemp = cosh(#z)*log(#z) endif ; initialization if @trapvariant != 0 if @swaporder if @trapvariant == 1 ; flip ztemp = flip(ztemp) elseif @trapvariant == 2 ; conjugate ztemp = conj(ztemp) elseif @trapvariant == 3 ; flip conjugate ztemp = flip(conj(ztemp)) elseif @trapvariant == 4 ; negate ztemp = -ztemp elseif @trapvariant == 5 ; negate flip ztemp = -flip(ztemp) elseif @trapvariant == 6 ; negate conjugate ztemp = -conj(ztemp) elseif @trapvariant == 7 ; negate flip conj = conj flip ztemp = -flip(conj(ztemp)) endif ; trapvariant2 endif ; swaporder endif ; trapvariant1 if @operator != 0 if @operator == 1 ; multiplication ztemp = ztemp * @operatee elseif @operator == 2 ; addition ztemp = ztemp + @operatee elseif @operator == 3 ; subtraction ztemp = ztemp - @operatee elseif @operator == 4 ; division ztemp = ztemp / @operatee elseif @operator == 5 ; exponentiation ztemp = ztemp ^ @operatee elseif @operator == 6 ; subtraction2 ztemp = @operatee - ztemp elseif @operator == 7 ; division2 ztemp = @operatee / ztemp elseif @operator == 8 ; exponential2 ztemp = @operatee ^ ztemp elseif @operator == 9 ; logarithm ztemp = log(ztemp) / log(@operatee) elseif @operator == 10 ; logarithm2 ztemp = log(@operatee) / log(ztemp) endif ; operator2 endif ; operator1 if @trapvariant != 0 if !@swaporder if @trapvariant == 1 ; flip ztemp = flip(ztemp) elseif @trapvariant == 2 ; conjugate ztemp = conj(ztemp) elseif @trapvariant == 3 ; flip conjugate ztemp = flip(conj(ztemp)) elseif @trapvariant == 4 ; negate ztemp = -ztemp elseif @trapvariant == 5 ; negate flip ztemp = -flip(ztemp) elseif @trapvariant == 6 ; negate conjugate ztemp = -conj(ztemp) elseif @trapvariant == 7 ; negate flip conj = conj flip ztemp = -flip(conj(ztemp)) endif ; trapvariant2 endif ; swaporder endif ; trapvariant1 ; center, rotate, scale z ztemp = ztemp - center ztemp = ztemp * exp( flip( rotation )) ztemp = scale * ztemp if @history if @histype == 0 zold = ztemp - zold, ztemp = zold elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold, zold = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold, zold = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp zangle = atan2( ztemp ) if zangle < 0 zangle = zangle + twopi endif ; zangle if @newstyle znewstyle = ztemp else znewstyle = #z endif ; newstyle repeat ; count if ( @exfunc == 0 ) ; simple exponential ztemp = @amplitude * exp( @frequency * ztemp + pix ) elseif ( @exfunc == 1 ) ztemp = @amplitude * exp( -@frequency * ztemp + pix ) elseif ( @exfunc == 2 ) ztemp = @amplitude * exp( @frequency / ztemp + pix ) elseif ( @exfunc == 3 ) ztemp = @amplitude * exp( -@frequency / ztemp + pix ) elseif ( @exfunc == 4 ) ztemp = ztemp*ztemp ztemp = @amplitude * exp( @frequency * ztemp + pix ) elseif ( @exfunc == 5 ) ztemp = ztemp*ztemp ztemp = @amplitude * exp( -@frequency * ztemp + pix ) elseif ( @exfunc == 6 ) ztemp = ztemp * ztemp ztemp = @amplitude * exp( @frequency / ztemp + pix ) elseif ( @exfunc == 7 ) ztemp = ztemp * ztemp ztemp = @amplitude * exp( -@frequency / ztemp + pix ) elseif ( @exfunc == 8 ) ztemp = ztemp * ztemp * ztemp ztemp = @amplitude * exp( @frequency * ztemp + pix ) elseif ( @exfunc == 9 ) ztemp = ztemp * ztemp * ztemp ztemp = @amplitude * exp( -@frequency * ztemp + pix ) elseif ( @exfunc == 10 ) ztemp = ztemp * ztemp * ztemp ztemp = @amplitude * exp( @frequency / ztemp + pix ) elseif ( @exfunc == 11 ) ztemp = ztemp * ztemp * ztemp ztemp = @amplitude * sin( -@frequency / ztemp + pix ) elseif ( @exfunc == 12 ) ztemp = ztemp ^ ztemp ztemp = @amplitude * exp( @frequency * ztemp + pix ) elseif ( @exfunc == 13 ) ztemp = ztemp ^ ztemp ztemp = @amplitude * exp( -@frequency * ztemp + pix ) elseif ( @exfunc == 14 ) ztemp = ztemp ^ ztemp ztemp = @amplitude * exp( @frequency / ztemp + pix ) elseif ( @exfunc == 15 ) ztemp = ztemp ^ ztemp ztemp = @amplitude * exp( -@frequency / ztemp + pix ) elseif ( @exfunc == 16 ) ztemp = @amplitude * exp( @frequency * exp(ztemp) + pix ) elseif ( @exfunc == 17 ) ztemp = @amplitude * exp( @frequency * exp(-ztemp) + pix ) elseif ( @exfunc == 18 ) ztemp = @amplitude * exp( -@frequency * exp(ztemp) + pix ) elseif ( @exfunc == 19 ) ztemp = @amplitude * exp( -@frequency * exp(-ztemp) + pix ) elseif ( @exfunc == 20 ) ztemp = @amplitude * exp( @frequency * exp(1/ztemp) + pix ) elseif ( @exfunc == 21 ) ztemp = @amplitude * exp( @frequency * exp(-1/ztemp) + pix ) elseif ( @exfunc == 22 ) ztemp = @amplitude * exp( -@frequency * exp(1/ztemp) + pix ) elseif ( @exfunc == 23 ) ztemp = @amplitude * exp( -@frequency * exp(-1/ztemp) + pix ) elseif ( @exfunc == 24 ) ; simple natural logarithm ztemp = @amplitude * log( @frequency * ztemp + pix ) elseif ( @exfunc == 25 ) ztemp = @amplitude * log( @frequency / ztemp + pix ) elseif ( @exfunc == 26 ) ztemp = @amplitude * log( -@frequency * ztemp + pix ) elseif ( @exfunc == 27 ) ztemp = @amplitude * log( -@frequency / ztemp + pix ) elseif ( @exfunc == 28 ) ztemp = @amplitude * log( log( @frequency * ztemp + pix )) elseif ( @exfunc == 29 ) ztemp = @amplitude * log( log( @frequency / ztemp + pix )) elseif ( @exfunc == 30 ) ztemp = @amplitude * log( log( -@frequency * ztemp + pix )) elseif ( @exfunc == 31 ) ztemp = @amplitude * log( log( -@frequency / ztemp + pix )) elseif ( @exfunc == 32 ) ztemp = @amplitude * log( log( log( @frequency * ztemp + pix ))) elseif ( @exfunc == 33 ) ztemp = @amplitude * ztemp * exp( @frequency * ztemp + pix ) elseif ( @exfunc == 34 ) ztemp = @amplitude * ztemp * exp( -@frequency * ztemp + pix ) elseif ( @exfunc == 35 ) ztemp = @amplitude * ztemp * exp( @frequency / ztemp + pix ) elseif ( @exfunc == 36 ) ztemp = @amplitude * ztemp * exp( -@frequency / ztemp + pix ) elseif ( @exfunc == 37 ) ztemp = @amplitude * ztemp * exp( @frequency * ztemp * ztemp + pix ) elseif ( @exfunc == 38 ) ztemp = @amplitude * ztemp * exp( -@frequency * ztemp * ztemp + pix ) elseif ( @exfunc == 39 ) ztemp = @amplitude * ztemp * exp( @frequency /(ztemp * ztemp) + pix ) elseif ( @exfunc == 40 ) ztemp = @amplitude * ztemp * exp( -@frequency /(ztemp * ztemp) + pix ) elseif ( @exfunc == 41 ) ztemp = @amplitude * ztemp * exp( @frequency * (ztemp ^ ztemp) + pix ) elseif ( @exfunc == 42 ) ztemp = @amplitude * ztemp * log( @frequency * ztemp + pix ) elseif ( @exfunc == 43 ) ztemp = @amplitude * ztemp * log( @frequency / ztemp + pix ) elseif ( @exfunc == 44 ) ztemp = @amplitude * ztemp * log( -@frequency * ztemp + pix ) elseif ( @exfunc == 45 ) ztemp = @amplitude * ztemp * log( -@frequency / ztemp + pix ) elseif ( @exfunc == 46 ) ztemp = @amplitude * ztemp * log( log( @frequency * ztemp + pix )) elseif ( @exfunc == 47 ) ztemp = @amplitude * ztemp * log( log( @frequency / ztemp + pix )) elseif ( @exfunc == 48 ) ztemp = @amplitude * exp( @frequency * ztemp + pix ) / ztemp elseif ( @exfunc == 49 ) ztemp = @amplitude * exp( -@frequency * ztemp + pix ) / ztemp elseif ( @exfunc == 50 ) ztemp = @amplitude * exp( @frequency / ztemp + pix ) / ztemp elseif ( @exfunc == 51 ) ztemp = @amplitude * exp( -@frequency / ztemp + pix ) / ztemp elseif ( @exfunc == 52 ) ztemp = @amplitude * exp( @frequency * ztemp * ztemp + pix ) / ztemp elseif ( @exfunc == 53 ) ztemp = @amplitude * exp( -@frequency * ztemp * ztemp + pix ) / ztemp elseif ( @exfunc == 54 ) ztemp = @amplitude * exp( @frequency /(ztemp * ztemp) + pix ) / ztemp elseif ( @exfunc == 55 ) ztemp = @amplitude * exp( -@frequency /(ztemp * ztemp) + pix ) / ztemp elseif ( @exfunc == 56 ) ztemp = @amplitude * exp( @frequency * (ztemp ^ ztemp) + pix ) / ztemp elseif ( @exfunc == 57 ) ztemp = @amplitude * log( @frequency * ztemp + pix ) / ztemp elseif ( @exfunc == 58 ) ztemp = @amplitude * log( @frequency / ztemp + pix ) / ztemp elseif ( @exfunc == 59 ) ztemp = @amplitude * log( -@frequency * ztemp + pix ) / ztemp elseif ( @exfunc == 60 ) ztemp = @amplitude * log( -@frequency / ztemp + pix ) / ztemp elseif ( @exfunc == 61 ) ztemp = @amplitude * log( log( @frequency * ztemp + pix )) / ztemp elseif ( @exfunc == 62 ) ztemp = @amplitude * log( log( @frequency / ztemp + pix )) / ztemp elseif ( @exfunc == 63 ) ztemp = @amplitude * ztemp * ztemp * exp( @frequency * ztemp + pix ) elseif ( @exfunc == 64 ) ztemp = @amplitude * ztemp * ztemp * exp( -@frequency * ztemp + pix ) elseif ( @exfunc == 65 ) ztemp = @amplitude * ztemp * ztemp * exp( @frequency / ztemp + pix ) elseif ( @exfunc == 66 ) ztemp = @amplitude * ztemp * ztemp * exp( -@frequency / ztemp + pix ) elseif ( @exfunc == 67 ) ztemp = @amplitude * ztemp * ztemp * exp( @frequency * (ztemp ^ ztemp) + pix ) elseif ( @exfunc == 68 ) ztemp = @amplitude * ztemp * ztemp * log( @frequency * ztemp + pix ) elseif ( @exfunc == 69 ) ztemp = @amplitude * ztemp * ztemp * log( @frequency / ztemp + pix ) elseif ( @exfunc == 70 ) ztemp = @amplitude * ztemp * ztemp * log( -@frequency * ztemp + pix ) elseif ( @exfunc == 71 ) ztemp = @amplitude * ztemp * ztemp * log( -@frequency / ztemp + pix ) elseif ( @exfunc == 72 ) ztemp = @amplitude * ztemp * ztemp * log( log( @frequency * ztemp + pix )) elseif ( @exfunc == 73 ) ztemp = @amplitude * ztemp * ztemp * log( log( @frequency / ztemp + pix )) elseif ( @exfunc == 74 ) ztemp = @amplitude * exp( @frequency * ztemp + pix ) / ( ztemp * ztemp ) elseif ( @exfunc == 75 ) ztemp = @amplitude * exp( -@frequency * ztemp + pix ) / ( ztemp * ztemp ) elseif ( @exfunc == 76 ) ztemp = @amplitude * exp( @frequency / ztemp + pix ) / ( ztemp * ztemp ) elseif ( @exfunc == 77 ) ztemp = @amplitude * exp( -@frequency / ztemp + pix ) / ( ztemp * ztemp ) elseif ( @exfunc == 78 ) ztemp = @amplitude * exp( @frequency * (ztemp ^ ztemp) + pix ) / ( ztemp * ztemp ) elseif ( @exfunc == 79 ) ztemp = @amplitude * log( @frequency * ztemp + pix ) / ( ztemp * ztemp ) elseif ( @exfunc == 80 ) ztemp = @amplitude * log( @frequency / ztemp + pix ) / ( ztemp * ztemp ) elseif ( @exfunc == 81 ) ztemp = @amplitude * log( -@frequency * ztemp + pix ) / ( ztemp * ztemp ) elseif @exfunc == 82 ztemp = @amplitude * log( -@frequency / ztemp + pix ) / ( ztemp * ztemp ) else ; @exfunc == 83 ztemp = @amplitude / ztemp + @frequency * pix endif ; exfunc if @polar ztemp = cabs(ztemp) * exp( flip( zangle )) endif ; @polar if ( @trapmode == 0 ) ; transmogrified trap-modulated #z ztest = cabs( ztemp ) elseif ( @trapmode == 1 ) ; distance between fractal and trap ztest = cabs( #z - ztemp ) elseif ( @trapmode == 2 ) ; difference ztest = cabs( ztemp - #z ) elseif ( @trapmode == 3 ) ; sum ztest = cabs( #z + ztemp ) elseif ( @trapmode == 4 ) ; product ztest = cabs( #z * ztemp ) elseif ( @trapmode == 5 ) ; quotient 1 ztest = cabs( #z / ztemp ) elseif ( @trapmode == 6 ) ; quotient 2 ztest = cabs( ztemp / #z ) elseif ( @trapmode == 7 ) ; power 1 ztest = cabs( #z ^ ztemp ) elseif ( @trapmode == 8 ) ; power 2 ztest = cabs( ztemp ^ #z ) elseif ( @trapmode == 9 ) ; arithmetic mean ztest = cabs( (#z + ztemp)/2 ) elseif ( @trapmode == 10 ) ; geometric mean ztest = cabs( sqrt(#z * ztemp) ) elseif ( @trapmode == 11 ) ; angle 1 ztest = #pi + atan2( ztemp ) elseif ( @trapmode == 12 ) ; angle 2 ztest = #pi + atan2( #z - ztemp ) elseif ( @trapmode == 13 ) ; angle 3 ztest = #pi + atan2( #z + ztemp ) elseif ( @trapmode == 14 ) ; angle 4 ztest = #pi + atan2( #z * ztemp ) elseif ( @trapmode == 15 ) ; angle 5 ztest = #pi + atan2( #z / ztemp ) elseif ( @trapmode == 16 ) ; angle 6 ztest = #pi + atan2( ztemp / #z ) elseif ( @trapmode == 17 ) ; angle 7 ztest = #pi + atan2( #z ^ ztemp ) elseif ( @trapmode == 18 ) ; angle 8 ztest = #pi + atan2( ztemp ^ #z ) elseif ( @trapmode == 19 ) ; real 1 ztest = abs( real( ztemp )) elseif ( @trapmode == 20 ) ; real 2 ztest = abs( real( #z - ztemp )) elseif ( @trapmode == 21 ) ; real 3 ztest = abs( real( #z + ztemp )) elseif ( @trapmode == 22 ) ; real 4 ztest = abs( real( #z * ztemp )) elseif ( @trapmode == 23 ) ; real 5 ztest = abs( real( #z / ztemp )) elseif ( @trapmode == 24 ) ; real 6 ztest = abs( real( ztemp / #z )) elseif ( @trapmode == 25 ) ; real 7 ztest = abs( real( #z ^ ztemp )) elseif ( @trapmode == 26 ) ; real 8 ztest = abs( real( ztemp ^ #z )) elseif ( @trapmode == 27 ) ; imag 1 ztest = abs( imag( ztemp )) elseif ( @trapmode == 28 ) ; imag 2 ztest = abs( imag( #z - ztemp )) elseif ( @trapmode == 29 ) ; imag 3 ztest = abs( imag( #z + ztemp )) elseif ( @trapmode == 30 ) ; imag 4 ztest = abs( imag( #z * ztemp )) elseif ( @trapmode == 31 ) ; imag 5 ztest = abs( imag( #z / ztemp )) elseif ( @trapmode == 32 ) ; imag 6 ztest = abs( imag( ztemp / #z )) elseif ( @trapmode == 33 ) ; imag 7 ztest = abs( imag( #z ^ ztemp )) else ; @trapmode == 34 --- imag 8 ztest = abs( imag( ztemp ^ #z )) endif ; trapmode ; Save value for later turbulence tlast = ztest if ( @whattotrap == 0 ) ; minimum if ( ztest < ztesttrapped ) ztesttrapped = ztest ztrapped = #z ztemptrapped = ztemp itertrapped = iter endif ; ztest elseif ( @whattotrap == 1 ) ; maximum if ( ztest > ztesttrapped ) ztesttrapped = ztest ztrapped = #z ztemptrapped = ztemp itertrapped = iter endif ; ztest elseif ( @whattotrap == 2 ) ; average ztesttrapped = ztest + ztesttrapped itercount = itercount + 1 ztrapped = #z ; this will not be an accurate mode ztemptrapped = ztemp ; this will not be an accurate mode itertrapped = iter ; this will not be an accurate mode elseif ( @whattotrap == 3 ) ; 2nd minimum if ( ztest < ztesttrapped ) ; found a new minimum z2testtrapped = ztesttrapped ; store 2nd minimum ztesttrapped = ztest ; and store new minimum z2trapped = ztrapped ztrapped = #z z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 4 ) ; 2nd maximum if ( ztest > ztesttrapped ) z2testtrapped = ztesttrapped ztesttrapped = ztest z2trapped = ztrapped ztrapped = #z z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 5 ) ; avg. of min & 2nd min values if ( ztest < ztesttrapped ) ; found a new minimum z2testtrapped = ztesttrapped ; store 2nd minimum ztesttrapped = ztest ; and store new minimum z2trapped = ztrapped ztrapped = #z z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 6 ) ; avg. of max & 2nd max values if ( ztest > ztesttrapped ) ; found a new maximum z2testtrapped = ztesttrapped ; store 2nd maximum ztesttrapped = ztest ; and store new maximum z2trapped = ztrapped ztrapped = #z z2temptrapped = ztemptrapped ztemptrapped = ztemp iter2trapped = itertrapped itertrapped = iter endif ; ztest elseif ( @whattotrap == 7 ) ; first trap iteration if ( itertrapped == 0 ) ; nothing trapped yet, so this must be the first itertrapped = iter ztesttrapped = ztest ztrapped = #z ztemptrapped = ztemp endif ; itertrapped elseif ( @whattotrap == 8 ) ; last trap iteration; store each one in turn itertrapped = iter ztesttrapped = ztest ztrapped = #z ztemptrapped = ztemp elseif ( @whattotrap == 9 ) ; first threshold if ( itertrapped == 0 ) ; only trapping the first iteration that crosses threshold if ( ztest < @threshold ) ; if so, trap it if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; itertrapped elseif ( @whattotrap == 10 ) ; last threshold --- just store them all if ( ztest < @threshold ) ; if so, trap it if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest elseif @whattotrap == 11 ; threshold count, but store last value if ( ztest < @threshold ) ; if so, trap it threshcount = threshcount + 1 if !@ringstyle itertrapped = threshcount * iter ztesttrapped = threshcount * ztest ztrapped = threshcount * znewstyle ztemptrapped = threshcount * ztemp elseif ztest > innerradius itertrapped = threshcount * iter ztesttrapped = threshcount * ztest ztrapped = threshcount * znewstyle ztemptrapped = threshcount * ztemp endif ; ringstyle endif ; ztest elseif ( @whattotrap == 12 ) ; 2nd to dip below threshold value if ( ztest < @threshold ) if ( itertrapped == 0 ) ; nothing trapped yet, set flag for next time itertrapped = -1 elseif itertrapped == -1 ; must be the 2nd threshold value if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest > innerradius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; itertrapped endif ; test elseif ( @whattotrap == 13 ) ; 1st to exceed threshold limit if ( itertrapped == 0 ) ; nothing trapped yet if ( ztest > @threshold ) if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius for limits itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; itertrapped elseif ( @whattotrap == 14 ) ; 2nd to exceed threshold limit if ( ztest > @threshold ) if ( itertrapped == 0 ) ; nothing trapped yet, set flag for next time itertrapped = -1 elseif itertrapped == -1 ; must be the 2nd threshold value if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; itertrapped endif ; test elseif ( @whattotrap == 15 ) ; last to exceed threshold --- just store them all if ( ztest > @threshold ) if !@ringstyle itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp elseif ztest < innerradius ; really an outer radius for limits itertrapped = iter ztesttrapped = ztest ztrapped = znewstyle ztemptrapped = ztemp endif ; ringstyle endif ; ztest endif ; whattotrap count = count - 1 until ( count < 1 ) endif ; iter final: if ( itertrapped != 0 ) ; something has been trapped if ( @whattotrap == 2 ) ; calculate the average ztesttrapped = ztesttrapped / itercount elseif ( ( @whattotrap == 3 ) || ( @whattotrap == 4 ) ) ; we need to plot ; 2nd min/max, so switch ztesttrapped = z2testtrapped ztrapped = z2trapped ztemptrapped = z2temptrapped itertrapped = iter2trapped elseif ( ( @whattotrap == 5 ) || ( @whattotrap == 6 ) ) ; we need to average ztesttrapped = ( ztesttrapped + z2testtrapped ) / 2 ztrapped = ( ztrapped + z2trapped ) / 2 scratch = ( itertrapped + iter2trapped ) / 2.0 itertrapped = round( scratch ) endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; iteration _colorindex = @colorspread * itertrapped _color = _colorindex / #maxiter elseif ( @colorby == 1 ) ; magnitude _color = @colorspread * ztesttrapped elseif ( @colorby == 2 ) ; distance _color = @colorspread * cabs( ztrapped - ztemptrapped ) elseif ( @colorby == 3 ) ; angle _colorindex = atan2( ztrapped ) + #pi _color = @colorspread * _colorindex elseif ( @colorby == 4 ) ; modulated angle _color = @colorspread * ( #pi + atan2( ztemptrapped )) elseif ( @colorby == 5 ) ; angle of difference _color = @colorspread * ( #pi + atan2( ztrapped - ztemptrapped )) elseif ( @colorby == 6 ) ; zmag _color = @colorspread * cabs( ztrapped ) elseif ( @colorby == 7 ) ; modulated zmag _color = @colorspread * cabs( ztemptrapped ) endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else _color = ((_color + _coloradjust) + ( itertrapped % @ranges )) / @ranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else if ( @solid ) #solid = true else #index = 0.98 + _coloradjust endif ; solid endif ; itertrapped default: title = "Whimsical" param exfunc caption = "Trap Function" enum = "e^z" "e^-z" "e^(1/z)" "e^-(1/z)" "e^z2" "e^-z2" "e^(1/z2)" \ "e^-(1/z2)" "e^z3" "e^-z3" "e^(1/z3)" "e^-(1/z3)" "e^z^z" "e^-(z^z)" \ "e^(1/z^z)" "e^-(1/z^z)" "e^e^z" "e^e^-z" "e^-(e^z)" "e^-(e^-z)" \ "e^e^(1/z)" "e^e^-(1/z)" "e^-(e^(1/z))" "e^-(e^(-1/z))" "log(z)" \ "log(1/z)" "log(-z)" "log(-1/z)" "loglog(z)" "loglog(1/z)" "loglog(-z)" \ "loglog(-1/z)" "logloglog(z)" "ze^z" "ze^-z" "ze^(1/z)" "ze^-(1/z)" \ "ze^z2" "ze^-z2" "ze^(1/z2)" "ze^(-1/z2)" "ze^z^z" "zlog(z)" \ "zlog(1/z)" "zlog(-z)" "zlog(-1/z)" "zloglog(z)" "zloglog(1/z)" \ "(e^z)/z" "(e^-z)/z" "(e^1/z)/z" "(e^-1/z)/z" "(e^z2)/z" "(e^-z2)/z" \ "(e^1/z2)/z" "(e^-1/z2)/z" "(e^z^z)/z" "log(z)/z" "log(1/z)/z" \ "log(-z)/z" "log(-1/z)/z" "loglog(z)/z" "loglog(1/z)/z" "z2e^z" \ "z2e^-z" "z2e^(1/z)" "z2e^-(1/z)" "z2e^z^z" "z2log(z)" \ "z2log(1/z)" "z2log(-z)" "z2log(-1/z)" "z2loglog(z)" "z2loglog(1/z)" \ "(e^z)/z2" "(e^-z)/z2" "(e^1/z)/z2" "(e^-1/z)/z2" "(e^z^z)/z2" \ "log(z)/z2" "log(1/z)/z2" "log(-z)/z2" "log(-1/z)/z2" "1/z" default = 0 hint = "Select primary trap function" endparam param trapmode caption = "Flavor" enum = "modulation" "distance" "difference" "sum" "product" "quotient 1" \ "quotient 2" "power 1" "power 2" "arith. mean" "geom. mean" "angle 1" \ "angle 2" "angle 3" "angle 4" "angle 5" "angle 6" "angle 7" "angle 8" \ "real 1" "real 2" "real 3" "real 4" "real 5" "real 6" "real 7" "real 8" \ "imag 1" "imag 2" "imag 3" "imag 4" "imag 5" "imag 6" "imag 7" "imag 8" default = 0 hint = "The trap mode. The 'Watch What?' comparison is based on this mode" endparam param whattotrap caption = "Watch What?" enum = "minimum" "maximum" "average" "2nd minimum" "2nd maximum" \ "min2 avg" "max2 avg" "first" "last" "threshold" "last threshold" \ "threshold count" "2nd threshold" "1st limit" "2nd limit" "last limit" default = 0 hint = "What value should be examined for trapping? The 'Flavor' value is \ trapped using this criterion. If 'Watch What?' = [first] 'threshold', \ 'last threshold', or 'threshold count', parameter 'Threshold' may be adjusted" 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to input to the trap function loop" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" endparam param @colorby caption = "Color By?" enum = "iteration" "magnitude" "distance" "angle" "modulated angle" \ "difference angle" "z magnitude" "modulated magnitude" default = 0 hint = "Criterion for computing color index. For selections other than 'iteration', parameter 'Color Spread' may need to be drastically lowered!" endparam param @colorspread caption = "Color Spread" default = 6.0 hint = "This value can be used to expand/contract the range of colors. For 'Color By?' modes other than 'iteration', this value may need to be reduced significantly (~0.1-0.3 or so)." endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the trap function should be rotated from \ its default position" endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of trap function center/origin" endparam param tscale caption = "Scale" default = 1.0 min = 0.0 hint = "This parameter determines the size of the trap function" endparam param pixelinit caption = "Pixel Initialization" enum = "p" "1/p" "p^2" "1/p^2" "log(p)" "e^p" "p^p" "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" \ "1/p^3" "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" \ "sec(p)/p" "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" \ "psec(p)" "pcsc(p)" "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" \ "sec(1/p)" "csc(1/p)" "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" \ "asech(p)" "acosech(p)" "p^power" \ "sinh(p)^2" "cosh(p)^2" "tanh(p)^2" "cotanh(p)^2" \ "sech(p)^2" "cosech(p)^2" "sinh(1/p)" "cosh(1/p)" "tanh(1/p)" \ "cotanh(1/p)" "sech(1/p)" "cosech(1/p)" "sin(p)tan(p)" "sinh(p)tanh(p)" \ "sinh(p)cosh(p)" "sinh(p)^2*cosh(p)^2" "sin(p)^2*cos(p)^2" \ "sin(1/p)*cos(1/p)" "sin(1/p)^2" "sin(p)cos(1/p)" "sin(p)sin(1/p)" \ "log(p)^2" "sin(p)sin(2p)" "e^2p" "e^-2p" "sinh(1/p)cosh(1/p)" \ "sinh(1/p)^2" "sinh(p)cosh(1/p)" "sinh(p)sinh(1/p)" "sin(p)sinh(p)" \ "sin(p)cosh(p)" "sin(p)^2*sinh(p)^2" "sin(p)e^p" "cos(p)e^p" \ "sinh(p)e^p" "cosh(p)e^p" "sin(p)log(p)" "cos(p)log(p)" "sinh(p)log(p)" \ "cosh(p)log(p)" default = 0 hint = "The trap loop utilizes this initialized pixel value; p = #pixel" endparam param ppower caption = "Pixel Power" default = (0,1) hint = "Pixel exponent if param 'Pixel Initialization' is set to 'p^power'" endparam param frequency caption = "Frequency" default = (-1,5) hint = "Sets the frequency of the trap function" endparam param amplitude caption = "Amplitude" default = (0.5,4) hint = "Sets the height of the trap function" endparam param threshold caption = "Threshold" default = 0.20 hint = "This parameter sets the maximum value that will be trapped if 'Watch What?' is set \ to 'threshold', and the minimum value that will be trapped if 'Watch What?' is set \ to 'limit'" endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Watch What' is set to one \ of the 'Threshold' or 'Limit' options, then Threshold becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Watch What' is set to a 'Threshold' \ or 'Limit' option, this parameter determines the width of the ring trap" endparam param iterations caption = "Trap Iterations" default = 1 min = 1 hint = "The number of times the trap function will loop for each fractal iteration" endparam param skip caption = "Iterations to Skip" default = 0 min = 0 hint = "The number of fractal iterations to skip before starting to trap z" 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" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" endparam param cpower caption = "Color Power" default = 0.25 hint = "Color index exponent if param 'Color Warp Factor' is set to 'c^power'" endparam param newstyle caption = "New Style Trapping?" default = FALSE hint = "If enabled, compares trapped value with initialized z rather \ than #z" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param solid caption = "Solid Background" default = false hint = "Sets non-trapped pixels to the inside solid color" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (fBm) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" 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" endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" endparam } jam-CircleTrap2 { ; jam version 010829 (increased variational possibilities) ; My spin on a circle trap. ; Thanks to Luke Plant's formulas for the inspiration to allow ; feedback variation of the formula parameters. init: if ( @centermode == 0 ) complex trapcenter = @customcenter else ; @centermode == 1 complex trapcenter = #center endif ; centermode ; Change and scale variables to facilitate variation, if selected float rad = @radius, float radstep = 0.05 * @radstp float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @spreadstp float centerstep = 0.05 * @centerstp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth bool trapped = FALSE bool vary = TRUE float sign = 0.0 float innerradius = thresh - @ringwidth if @whattotrap > 11 innerradius = thresh + @ringwidth ; innerradius is really an outerradius if we are exceeding limits endif ; @whattotrap ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 float twopi = 2.0 * #pi int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Normalize pixel to circle center ztemp = zinput - trapcenter if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Find coordinates and angle of point on circle closest to #z (zinput) zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= twopi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle tempx = rad * cos( temp ), tempy = rad * sin( temp ) tempc = tempx + flip( tempy ) zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) ; To find angle of point on circle, we will translate point back to its original home cangle = atan2( tempc + trapcenter ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp + trapcenter ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc + trapcenter ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 ; test to see if any parameters should be varied float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyradius rad = rad + radstep * rad * value * sign endif ; varyradius if @varycenter tempx = real(trapcenter) + centerstep * real(trapcenter) * value \ * sign tempy = imag(trapcenter) + centerstep * imag(trapcenter) * value \ * sign trapcenter = tempx + flip( tempy ) endif ; varycenter if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = abs(cabs( zttrapped ) - rad) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = abs(cabs( ztrapped ) - rad) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Circle Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param radius caption = "Circle Radius" default = 0.5 hint = "Enter radius of circle used as trap" endparam param varyradius caption = "Vary Radius?" default = FALSE hint = "If set, the value of the trap will modify the circle radius each iteration; \ parameter 'RadiusFeedback' can be used to modulate the variation" endparam param radstp caption = "RadiusFeedback" default = 1.0 hint = "If 'Vary Radius' is set, this setting adjusts the amount of variation" visible = @varyradius endparam param centermode caption = "Circle Center" enum = "Custom" "Screen Center" default = 0 hint = "Set circle center; if 'Custom' is selected, parameter 'Custom Center' \ can be set to reposition circle" endparam param customcenter caption = "Custom Center" default = (0, 0) hint = "This value only applies when parameter 'Circle Center' is \ set to 'Custom'" visible = @centermode == 0 endparam param varycenter caption = "Vary Center?" default = FALSE hint = "If set, the value of the trap will modify the circle center each iteration; \ parameter 'CenterFeedback' can be used to modulate the variation" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the circle closest to the z iterate can be transformed \ prior to testing for trapping; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyradius || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyradius || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-ParabolaTangents { ; jam 010902 ; A very early version of this formula had rotation entry specified in radians. ; This parameter has been changed so that it is specified in degrees, which I ; thought was easier for most. If by chance you have an image that does not render ; properly, convert your previous rotation setting to radians! init: if ( @zoommode == 0 ) complex focus = @focs complex vertex = @vertx else complex focus = #center complex vertex = (@vertx - @focs)/#magn endif ; zoommode bool trapped = FALSE int iter = 0, int count = 1 float twopi = 2.0 * #pi, float halfpi = #pi / 2.0 float threehalvespi = 3.0 * halfpi, float fourthpi = halfpi/2.0 complex zinput = (0,0) ; translated #z float zmag = 0.0 complex ztemp = (0,0), float zangle = 0.0, float theta = 0.0 float gamma = sin( halfpi - #pi/@sides ) float sector = twopi / @sides float cangle = 0.0; parabola azimuth float angleincrement = threehalvespi / @numberdisks float disksize = @disksz, float diskradius = disksize/2 float testradius = 0.0 ; alias for diskradius complex tpoint = (0,0) ; test point on trap float tempx = 0.0, float tempy = 0.0 ; for computing point coordinates float test = 0.0 ; misc. value used for testing complex newvertex = (0,0), float vangle = 0.0, float netrotation = 0.0 float distance = 0.0 int _colorrange = 0, float _coloroffset = 0.0 float _colorindex = 1/@numberdisks ; For feedback/variation options float spread = @colorsprd, float spreadstep = 0.1 * @spreadstp float focusstep = 0.1 * @focusstp float vertexstep = 0.1 * @vertexstp float rotation = @rotate * #pi / 180, float rotationstep = 0.1 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation float diskstep = 0.1 * @diskstp float linewidth = @linewdth, float linestep = 0.1 * @linestp float elongation = @elongate, float ellipsestep = @ellipsestp float sign = 0.0 loop: iter = iter + 1 if ( !trapped && ( iter > @skippediters )) ; Translate fractal to be focus-centered, and calulate rotated position of z zinput = #z - focus newvertex = vertex - focus vangle = atan2( newvertex ) if ( vangle < 0 ) vangle = vangle + twopi endif ; vangle netrotation = vangle - threehalvespi + rotation if ( netrotation < 0 ) netrotation = netrotation + twopi endif ; netrotation zinput = zinput * exp( flip( -netrotation )) zmag = cabs( zinput ) ; Calculate parabola-specific parameters distance = 2 * cabs( newvertex ) ; So does z lie near one of the parabola shape center points? cangle = fourthpi ; reset tpoint to begin in first quadrant count = 0 ; reset repeat loop index repeat if @bugfix distance = distance/(1 - sin( cangle )) endif ; bugfix tpoint = distance * exp( flip( cangle )) ; Center z temporarily at the shape center ztemp = zinput - tpoint test = cabs( ztemp ) zangle = atan2( ztemp ) ; angle with respect to shape center if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle < twopi endif ; zangle if ( @shape == 0 ) ; disk testradius = diskradius elseif ( @shape == 1 ) ; polygon zangle = zangle % sector ; 0 <= zangle < twopi/sides theta = #pi - zangle - gamma testradius = diskradius * gamma / sin( theta ) elseif ( @shape == 2 ) ; line ztemp = ztemp * exp( -flip( cangle)) ; tpoint along x-axis test = abs(imag( ztemp )), testradius = linewidth else ; ellipse testradius = diskradius * elongation / ( 1 - elongation * cos( zangle )) endif ; shape if ( test <= testradius ) ; Does z fall within one of the tangent disks? trapped = TRUE _colorrange = count - 1 if ( @colormode == 0 ) ; tangent shape-radial _coloroffset = test / diskradius elseif ( @colormode == 1 ) ; circle-radial _coloroffset = (zmag - cabs(tpoint) + diskradius)/diskradius elseif ( @colormode == 2 ) ; _color by ztemp quadrant relative to shape center if ( zangle <= halfpi ) _coloroffset = 0 elseif ( zangle <= #pi ) _coloroffset = 0.25 elseif ( zangle <= 3 * halfpi ) _coloroffset = 0.5 else _coloroffset = 0.75 endif ; zangle else ; @colormode == 3 --- continuous ztemp angle relative to shape center _coloroffset = zangle / twopi endif ; _colormode endif ; test cangle = cangle - angleincrement ; get ready for next tpoint on parabola count = count + 1 until ( trapped || ( count > @numberdisks )) ; tempx if !trapped ; vary chosen parameter if set sign = real(zinput)/abs(real(zinput)) if @varyrotation rotation = rotation + rotationstep * rotation * zmag * sign endif ; varyrotation if @varyfocus tempx = real(focus) + focusstep * real(focus) * zmag * sign tempy = imag(focus) + focusstep * imag(focus) * zmag * sign focus = tempx + flip( tempy ) endif ; varyfocus if @varyvertex tempx = real(vertex) + vertexstep * real(vertex) * zmag * sign tempy = imag(vertex) + vertexstep * imag(vertex) * zmag * sign vertex = tempx + flip( tempy ) endif ; varyvertex if @varydisksz disksize = disksize + diskstep * disksize * zmag * sign endif ; varydisksz if @varyspread spread = spread + spreadstep * spread * zmag * sign endif ; varyspread if @varyline linewidth = linewidth + linestep * linewidth * zmag * sign endif ; varyline if @varyellipse elongation = elongation + ellipsestep * elongation * zmag * sign endif ; varyellipse endif ; !trapped2 endif ; !trapped1 final: if trapped if @onerange #index = _coloroffset else #index = @colorsprd * _colorindex * ( _colorrange + _coloroffset ) endif ; onerange else #solid = TRUE endif ; trapped default: title = "Parabola Tangents" param shape caption = "Tangent Shape" enum = "disk" "polygon" "line" "ellipse" default = 0 hint = "Determines shape of tangent trap" endparam param disksz caption = "Shape Size" default = 0.4 hint = "Enter size of tangent shapes. For 'Tangent Shape' = line, this is the line length; \ line width is set by parameter 'Line Width'" endparam param numberdisks caption = "Shape Number" default = 7 min = 1 hint = "This parameter determines how many shape traps are placed along the primary parabola path" endparam param zoommode caption = "Parabola Focus" enum = "Custom" "Screen Center" default = 0 hint = "Set parabola focus; if 'Custom' is selected, also set parameter \ 'Custom Focus'" endparam param focs caption = "Custom Focus" default = (0, 0) hint = "This value only applies when parameter 'Parabola Focus' is \ set to 'Custom'" endparam param vertx caption = "Parabola Vertex" default = (0, -1) hint = "This value only applies when parameter 'Parabola Focus' is \ set to 'Custom'" endparam param rotate caption = "Rotation" default = 0.0 min = -179.9 max = 359.9 hint = "Enter amount of rotation from default of the parabola (0-359 degrees)" endparam param @colorsprd caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param @colormode caption = "Coloring Mode" enum = "ShapeRadial" "FocusRadial" "Quadrant" "Angle" default = 0 hint = "'ShapeRadial' means color index increases from tangent shape center outwards; \ 'FocusRadial' means index increases from trap focus outward" endparam param sides caption = "Polygon Order" default = 4 min = 3 hint = "Enter number of sides of polygon" endparam param linewdth caption = "Line Width" default = 0.01 hint = "This is the width of the line if 'Tangent Shape' is set to 'line'" endparam param elongate caption = "Ellipse Eccentricity" default = 0.6 min = 0.0 max = 0.95 hint = "This setting (0.0-0.95)affects the elongation of the ellipse if 'Tangent Shape' \ is set to 'ellipse'; 0.0 reverts to a circle" endparam param varydisksz caption = "Vary Shape?" default = FALSE hint = "If set, the value of the trap will modify the tangent shape radius each iteration; \ parameter 'ShapeFeedback' can be used to modulate the variation" endparam param diskstp caption = "ShapeFeedback" default = 1.0 hint = "If 'Vary Shape' is set, this setting adjusts the amount of variation" endparam param varyrotation caption = "Vary Rotation?" default = FALSE hint = "If set, the value of the trap will modify the parabola rotation each iteration; \ parameter 'RotationFeedback' can be used to modulate the variation" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" endparam param varyfocus caption = "Vary Focus?" default = FALSE hint = "If set, the value of the trap will modify the parabola focus each iteration; \ parameter 'FocusFeedback' can be used to modulate the variation" endparam param focusstp caption = "FocusFeedback" default = 1.0 hint = "If 'Vary Focus' is set, this setting adjusts the amount of variation" endparam param varyvertex caption = "Vary Vertex?" default = FALSE hint = "If set, the value of the trap will modify the parabola vertex each iteration; \ parameter 'VertexFeedback' can be used to modulate the variation" endparam param vertexstp caption = "VertexFeedback" default = 1.0 hint = "If 'Vary Vertex' is set, this setting adjusts the amount of variation" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" endparam param varyline caption = "Vary LineWidth?" default = FALSE hint = "If set, the value of the trap will modify the line width each \ iteration; parameter 'LineFeedback' can be used to modulate the variation. \ Only applies to 'Tangent Shape' = 'line'" endparam param linestp caption = "LineFeedback" default = 1.0 hint = "If 'Vary LineWidth' is set, this setting adjusts the amount of variation" endparam param varyellipse caption = "Vary Eccentricity?" default = FALSE hint = "If set, the value of the trap will modify the ellipse elongation each \ iteration; parameter 'EllipseFeedback' can be used to modulate the variation. \ Only applies to 'Tangent Shape' = 'ellipse'" endparam param ellipsestp caption = "EllipseFeedback" default = 1.0 hint = "If 'Vary Eccentricity' is set, this setting adjusts the amount of variation" endparam param onerange caption = "Single Range?" default = FALSE hint = "If enabled, a single color range will be used; otherwise, the number of \ color ranges is equal to the number of tangent shapes set by 'Shape Number'" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" endparam param bugfix caption = "Bug Fix?" default = TRUE hint = "Oops! Bug looks pretty good, though, and is retained for compatibility" endparam } jam-SemicubicalParabola1Trap { ; jam version 010902 ; The semicubical parabola is defined by y = x^(2/3). ; A very early version of this formula had rotation entry specified in radians. ; This parameter has been changed so that it is specified in degrees, which I ; thought was easier for most. If by chance you have an image that does not render ; properly, convert your previous rotation setting to radians! init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @pscale, float scalestep = 0.05 * @scalestp float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 float anglelimit = #pi / 36.0 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) float tempzangle = 0.0 ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on semicubical parabola closest to #z (zinput) ; First, center z on the parabola center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( @anglerestrict && ( zangle < 0 )) zangle = zangle + #pi ; 0 <= zangle <= pi --- semicubical parab undefined for angles > pi elseif ( zangle < 0 ) zangle = anglelimit endif ; anglerestrict ; Find point on semicubical parabola --- origin-#z radial vector tempzangle = zangle if ( (abs( #pi - tempzangle ) < anglelimit ) || ( tempzangle < anglelimit )) ; prevent division by zero tempzangle = anglelimit endif ; abs if @sprangle tempzangle = tempzangle*@sprangfactor endif ; @sprangle ; Actual point on parabola, distance to z tempx = cos( tempzangle ), tempy = sin( tempzangle ) tempc = scale * tempx * tempx / ( tempy * tempy * tempy ) if @bugfix tempc = tempc * exp( flip( tempzangle)) endif ; bugfix if !@polar tempc = real(ztemp) + flip( cabs(tempc)) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; products ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "SemicubicalParabola1 Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param pscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the semicubical parabola" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that parabola should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of parabola 'center'" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the parabola potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param anglerestrict caption = "Restrict Angle?" default = FALSE hint = "If enabled, atan(z) is restricted to the interval 0-pi symmetrically; otherwise, \ it is unrestricted" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param bugfix caption = "Fix Bug?" default = TRUE hint = "Oops! The bug looks pretty good, though, and is retained for compatibility" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (fBm) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-CircleTangents { ; jam 010902 init: if ( @centermode == 0 ) complex circlecenter = @circlecentr float radius = @rad else complex circlecenter = #center float radius = @rad/#magn endif ; centermode bool trapped = FALSE int iter = 0, int count = 1 float twopi = 2.0 * #pi, float halfpi = #pi / 2.0 complex zinput = (0,0) ; translated #z float zmag = 0.0 complex ztemp = (0,0), float zangle = 0.0, float theta = 0.0 float gamma = sin( halfpi - #pi/@sides ) float sector = twopi / @sides float cangle = 0.0; circle azimuth float angleincrement = twopi / @numberdisks float disksize = @disksz, float diskradius = disksize/2 float testradius = 0.0 ; alias for diskradius complex tpoint = (0,0) ; test point on circle float tempx = 0.0, float tempy = 0.0 ; for computing point coordinates float test = 0.0 ; misc. value used for testing int _colorrange = 0, float _coloroffset = 0.0 float _colorindex = 1/@numberdisks ; For feedback/variation options float _colorspread = @colorsprd, float spreadstep = 0.1 * @spreadstp float centerstep = 0.1 * @centerstp float radstep = 0.1 * @radstp float diskstep = 0.1 * @diskstp float linewidth = @linewdth, float linestep = 0.1 * @linestp float elongation = @elongate, float ellipsestep = @ellipsestp float sign = 0.0 loop: iter = iter + 1 if ( !trapped && ( iter > @skippediters )) ; Translate fractal to be circle-centered zinput = #z - circlecenter zmag = cabs( zinput ) if ( abs(zmag - radius) <= diskradius ) ; magnitude falls within trap ring width ; So does it also lie near one of the circle points? cangle = 0.0 ; reset tpoint to begin at origin count = 0 ; reset repeat loop index repeat tempx = radius * cos( cangle ), tempy = radius * sin( cangle ) tpoint = tempx + flip( tempy ) ; Center z temporarily at the shape center ztemp = zinput - tpoint test = cabs( ztemp ) zangle = atan2( ztemp ) ; angle with respect to shape (point trap) center if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle < twopi endif ; zangle if ( @shape == 0 ) ; disk testradius = diskradius elseif ( @shape == 1 ) ; polygon zangle = zangle % sector ; 0 <= zangle < twopi/sides theta = #pi - zangle - gamma testradius = diskradius * gamma / sin( theta ) elseif ( @shape == 2 ) ; line ztemp = ztemp * exp( -flip( cangle)) ; tpoint along x-axis test = abs(imag( ztemp )), testradius = linewidth else ; ellipse testradius = diskradius * elongation / ( 1 - elongation * cos( zangle )) endif ; shape if ( test <= testradius ) ; Does z fall within one of the tangent disks? trapped = TRUE _colorrange = count - 1 if ( @colormode == 0 ) ; tangent shape-radial _coloroffset = test / diskradius elseif ( @colormode == 1 ) ; circle-radial _coloroffset = (zmag - radius + diskradius)/diskradius elseif ( @colormode == 2 ) ; _color by ztemp quadrant relative to shape center if ( zangle <= halfpi ) _coloroffset = 0 elseif ( zangle <= #pi ) _coloroffset = 0.25 elseif ( zangle <= 3 * halfpi ) _coloroffset = 0.5 else _coloroffset = 0.75 endif ; zangle else ; @colormode == 3 --- continuous ztemp angle relative to shape center _coloroffset = zangle / twopi endif ; _colormode endif ; test cangle = cangle + angleincrement ; get ready for next tpoint on circle count = count + 1 until ( trapped || ( count > @numberdisks )) ; tempx endif ; zmag if !trapped ; vary chosen parameter if set sign = real(zinput)/abs(real(zinput)) if @varyradius radius = radius + radstep * radius * zmag * sign endif ; varyradius if @varycenter tempx = real(circlecenter) + centerstep * real(circlecenter) * zmag * sign tempy = imag(circlecenter) + centerstep * imag(circlecenter) * zmag * sign circlecenter = tempx + flip( tempy ) endif ; varycenter if @varydisksz disksize = disksize + diskstep * disksize * zmag * sign endif ; varydisksz if @varyspread _colorspread = _colorspread + spreadstep * _colorspread * zmag * sign endif ; varyspread if @varyline linewidth = linewidth + linestep * linewidth * zmag * sign endif ; varyline if @varyellipse elongation = elongation + ellipsestep * elongation * zmag * sign endif ; varyellipse endif ; !trapped2 endif ; !trapped1 final: if trapped if @onerange #index = _coloroffset else #index = @colorsprd * _colorindex * ( _colorrange + _coloroffset ) endif ; onerange else #solid = TRUE endif ; trapped default: title = "Circle Tangents" param shape caption = "Tangent Shape" enum = "disk" "polygon" "line" "ellipse" default = 0 hint = "Determines shape of tangent trap" endparam param disksz caption = "Shape Size" default = 0.2 hint = "Enter size of tangent shapes. For 'Tangent Shape' = line, this is the line length; \ line width is set by parameter 'Line Width'" endparam param numberdisks caption = "Shape Number" default = 7 min = 1 hint = "This parameter determines how many shapes are placed around the trap circle" endparam param rad caption = "Circle Radius" default = 0.5 hint = "Enter radius of circle used as trap" endparam param centermode caption = "Circle Center" enum = "Custom" "Screen Center" default = 0 hint = "Set circle center; if 'Custom' is selected, also set parameter \ 'Custom Center'" endparam param circlecentr caption = "Custom Center" default = (0, 0) hint = "This value only applies when parameter 'Circle Center' is \ set to 'Custom'" endparam param @colorsprd caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param @colormode caption = "Coloring Mode" enum = "ShapeRadial" "CircleRadial" "Quadrant" "Angle" default = 0 hint = "'ShapeRadial' means color index increases from tangent shape center outwards; \ 'CircleRadial' means index increases from trap circle center outward" endparam param sides caption = "Polygon Order" default = 4 min = 3 hint = "Enter number of sides of polygon" endparam param linewdth caption = "Line Width" default = 0.02 hint = "This is the width of the line if 'Tangent Shape' is set to 'line'" endparam param elongate caption = "Ellipse Eccentricity" default = 0.6 min = 0.0 max = 0.95 hint = "This setting (0.0-0.95)affects the elongation of the ellipse if 'Tangent Shape' \ is set to 'ellipse'; 0.0 reverts to a circle" endparam param varydisksz caption = "Vary Shape?" default = FALSE hint = "If set, the value of the trap will modify the tangent shape radius each iteration; \ parameter 'ShapeFeedback' can be used to modulate the variation" endparam param diskstp caption = "ShapeFeedback" default = 1.0 hint = "If 'Vary Shape' is set, this setting adjusts the amount of variation" endparam param varyradius caption = "Vary Radius?" default = FALSE hint = "If set, the value of the trap will modify the circle radius each iteration; \ parameter 'RadiusFeedback' can be used to modulate the variation" endparam param radstp caption = "RadiusFeedback" default = 1.0 hint = "If 'Vary Radius' is set, this setting adjusts the amount of variation" endparam param varycenter caption = "Vary Center?" default = FALSE hint = "If set, the value of the trap will modify the circle center each iteration; \ parameter 'CenterFeedback' can be used to modulate the variation" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" endparam param varyline caption = "Vary LineWidth?" default = FALSE hint = "If set, the value of the trap will modify the line width each \ iteration; parameter 'LineFeedback' can be used to modulate the variation. \ Only applies to 'Tangent Shape' = 'line'" endparam param linestp caption = "LineFeedback" default = 1.0 hint = "If 'Vary LineWidth' is set, this setting adjusts the amount of variation" endparam param varyellipse caption = "Vary Eccentricity?" default = FALSE hint = "If set, the value of the trap will modify the ellipse elongation each \ iteration; parameter 'EllipseFeedback' can be used to modulate the variation. \ Only applies to 'Tangent Shape' = 'ellipse'" endparam param ellipsestp caption = "EllipseFeedback" default = 1.0 hint = "If 'Vary Eccentricity' is set, this setting adjusts the amount of variation" endparam param onerange caption = "Single Range?" default = FALSE hint = "If enabled, a single color range will be used; otherwise, the number of \ color ranges is equal to the number of tangent shapes set by 'Shape Number'" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" endparam } jam-ParabolaTrap { ; jam version 010829 ; Thanks to Luke Plant's formulas for the inspiration to allow ; feedback variation of the formula parameters. ; A very early version of this formula had rotation entry specified in radians. ; This parameter has been changed so that it is specified in degrees, which I ; thought was easier for most. If by chance you have an image that does not render ; properly, convert your previous rotation setting to radians! init: if ( @zoommode == 0 ) complex focus = @focs/#magn else ; @zoommode == 1 complex focus = @focs endif ; zoommode ; Change and scale variables to facilitate variation, if selected float twopi = 2.0 * #pi, float halfpi = #pi/2.0, float threehalvespi = 3*halfpi complex vertex = @vertx, float vertexstep = 0.05 * @vertexstp float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float focusstep = 0.05 * @focusstp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation bool trapped = FALSE bool vary = TRUE float sign = 0.0 float innerradius = thresh - @ringwidth if ( @whattotrap > 11 ) innerradius = thresh + @ringwidth ; innerradius is really an outerradius if we are exceeding limits endif ; @whattotrap ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 complex newvertex = (0,0), float vangle = 0.0, float netrotation = 0.0 float distance = 0.0, float tempzangle = 0.0 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Normalize pixel and vertex to parabola focus ztemp = zinput - focus, newvertex = vertex - focus ; Find coordinates and angle of point on parabola closest to #z (zinput) ; First, angle of vertex with respect to focus vangle = atan2( newvertex ) if ( vangle < 0 ) vangle = vangle = twopi endif ; vangle ; Compute rotated #z netrotation = vangle - threehalvespi + rotation if ( netrotation < 0 ) netrotation = netrotation + twopi endif ; netrotation ztemp = ztemp * exp( flip( -netrotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= twopi endif ; zangle if ( @anglerestrict && ( zangle < #pi )) zangle = twopi - zangle ; pi <= zangle <= twopi, i.e., 3rd or 4th quadrant endif ; anglerestrict ; Find point on parabola --- focus-#z radial vector distance = 2 * cabs( newvertex ) tempzangle = zangle if ( abs( halfpi - tempzangle ) < 1e-6 ) ; prevent division by zero tempzangle = 49 * #pi / 100 endif ; abs if @sprangle tempzangle = tempzangle*@sprangfactor endif ; @sprangle ; Actual point on parabola, distance to z distance = distance / ( 1 - sin( tempzangle )) tempc = @scale * distance * exp( flip( tempzangle)) if !@polar tempc = real(ztemp) + flip(distance) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp + focus ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc + focus ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyfocus tempx = real(focus) + focusstep * real(focus) * value * sign tempy = imag(focus) + focusstep * imag(focus) * value * sign focus = tempx + flip( tempy ) endif ; varyfocus if @varyvertex tempx = real(vertex) + vertexstep * real(vertex) * value * sign tempy = imag(vertex) + vertexstep * imag(vertex) * value * sign vertex = tempx + flip( tempy ) endif ; varyvertex if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Parabola Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param zoommode caption = "Focus Mode" enum = "Screen Center" "Custom" default = 1 hint = "If 'Screen Center' is set, focus and vertex follow zoom with scaling; \ ; if 'Custom' is selected, focus and vertex remain fixed at selected coordinates upon zoom" endparam param focs caption = "Focus of Parabola" default = (0,0) hint = "Enter coordinates of parabola focus" visible = @zoommode == "Custom" endparam param varyfocus caption = "Vary Focus?" default = FALSE hint = "If set, the value of the trap will modify the parabola focus each iteration; \ parameter 'FocusFeedback' can be used to modulate the variation" visible = @zoommode == "Custom" endparam param focusstp caption = "FocusFeedback" default = 1.0 hint = "If 'Vary Focus' is set, this setting adjusts the amount of variation" visible = @varyfocus && ( @zoommode == "Custom" ) endparam param vertx caption = "Vertex of Parabola" default = (0,-1) hint = "Enter coordinates of parabola vertex" visible = @zoommode == "Custom" endparam param varyvertex caption = "Vary Vertex?" default = FALSE hint = "If set, the value of the trap will modify the parabola vertex each iteration; \ parameter 'VertexFeedback' can be used to modulate the variation" visible = @zoommode == "Custom" endparam param vertexstp caption = "VertexFeedback" default = 1.0 hint = "If 'Vary Vertex' is set, this setting adjusts the amount of variation" visible = @varyvertex && ( @zoommode == "Custom" ) endparam param scale caption = "Parabola Scale" default = 1.0 hint = "This value can be used to adjust the size of the parabola" endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that parabola should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the parabola potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param anglerestrict caption = "Restrict Angle?" default = FALSE hint = "If enabled, atan(z) is restricted to the interval 'below' the parabola; \ otherwise, it is unrestricted" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyfocus || @varyvertex || @varyrotation || @varythresh || @varyrwidth || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyfocus || @varyvertex || @varyrotation || @varythresh || @varyrwidth || @varyspread) endparam } jam-SemicubicParab1Tangents { ; jam 010904 ; A very early version of this formula had rotation entry specified in radians. ; This parameter has been changed so that it is specified in degrees, which I ; thought was easier for most. If by chance you have an image that does not render ; properly, convert your previous rotation setting to radians! init: bool trapped = FALSE int iter = 0, int count = 1 float twopi = 2.0 * #pi, float halfpi = #pi / 2.0 float sixthpi = halfpi/3.0, float fivesixthspi = 5.0 * sixthpi complex zinput = (0,0) ; translated #z float zmag = 0.0 complex ztemp = (0,0), float zangle = 0.0, float theta = 0.0 float gamma = sin( halfpi - #pi/@sides ) float sector = twopi / @sides float cangle = 0.0; parabola azimuth float angleincrement = (fivesixthspi - sixthpi) / @numberdisks float disksize = @disksz, float diskradius = disksize/2 float testradius = 0.0 ; alias for diskradius complex tpoint = (0,0) ; test point on trap float tempx = 0.0, float tempy = 0.0 ; for computing point coordinates float test = 0.0 ; misc. value used for testing int _colorrange = 0, float _coloroffset = 0.0 float _colorindex = 1/@numberdisks ; For feedback/variation options complex center = @centr, float centerstep = 0.1 * @centerstp float scale = @pscale, float scalestep = 0.1 * @scalestp float spread = @colorsprd, float spreadstep = 0.1 * @spreadstp float rotation = @rotate * #pi / 180, float rotationstep = 0.1 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation float diskstep = 0.1 * @diskstp float linewidth = @linewdth, float linestep = 0.1 * @linestp float elongation = @elongate, float ellipsestep = @ellipsestp float sign = 0.0 loop: iter = iter + 1 if ( !trapped && ( iter > @skippediters )) ; Translate fractal to be parabola-centered, and calulate rotated position of z zinput = #z - center zinput = zinput * exp( flip( -rotation )) zmag = cabs( zinput ) ; Calculate semicubical parabola-specific parameters ; Does z lie near one of the parabola shape center points? cangle = sixthpi ; reset tpoint to begin in first quadrant count = 0 ; reset repeat loop index repeat tempx = cos( cangle ), tempy = sin( cangle ) tempx = scale * tempx * tempx / ( tempy * tempy * tempy ) tpoint = tempx * exp( flip( cangle )) ; Center z temporarily at the shape center ztemp = zinput - tpoint test = cabs( ztemp ) zangle = atan2( ztemp ) ; angle with respect to shape center if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle < twopi endif ; zangle if ( @shape == 0 ) ; disk testradius = diskradius elseif ( @shape == 1 ) ; polygon zangle = zangle % sector ; 0 <= zangle < twopi/sides theta = #pi - zangle - gamma testradius = diskradius * gamma / sin( theta ) elseif ( @shape == 2 ) ; line ztemp = ztemp * exp( -flip( cangle)) ; tpoint along x-axis test = abs(imag( ztemp )), testradius = linewidth else ; ellipse testradius = diskradius * elongation / ( 1 - elongation * cos( zangle )) endif ; shape if ( test <= testradius ) ; Does z fall within one of the tangent disks? trapped = TRUE _colorrange = count - 1 if ( @colormode == 0 ) ; tangent shape-radial _coloroffset = test / diskradius elseif ( @colormode == 1 ) ; circle-radial _coloroffset = (zmag - cabs(tpoint) + diskradius)/diskradius elseif ( @colormode == 2 ) ; _color by ztemp quadrant relative to shape center if ( zangle <= halfpi ) _coloroffset = 0 elseif ( zangle <= #pi ) _coloroffset = 0.25 elseif ( zangle <= 3 * halfpi ) _coloroffset = 0.5 else _coloroffset = 0.75 endif ; zangle else ; @colormode == 3 --- continuous ztemp angle relative to shape center _coloroffset = zangle / twopi endif ; _colormode endif ; test cangle = cangle + angleincrement ; get ready for next tpoint on parabola count = count + 1 until ( trapped || ( count > @numberdisks )) ; tempx if !trapped ; vary chosen parameter if set sign = real(zinput)/abs(real(zinput)) if @varyrotation rotation = rotation + rotationstep * rotation * zmag * sign endif ; varyrotation if @varycenter tempx = real(center) + centerstep * real(center) * zmag * sign tempy = imag(center) + centerstep * imag(center) * zmag * sign center = tempx + flip( tempy ) endif ; varycenter if @varyscale scale = scale + scalestep * scale * zmag * sign endif ; varyscale if @varydisksz disksize = disksize + diskstep * disksize * zmag * sign endif ; varydisksz if @varyspread spread = spread + spreadstep * spread * zmag * sign endif ; varyspread if @varyline linewidth = linewidth + linestep * linewidth * zmag * sign endif ; varyline if @varyellipse elongation = elongation + ellipsestep * elongation * zmag * sign endif ; varyellipse endif ; !trapped2 endif ; !trapped1 final: if trapped if @onerange #index = _coloroffset else #index = @colorsprd * _colorindex * ( _colorrange + _coloroffset ) endif ; onerange else #solid = TRUE endif ; trapped default: title = "Semicub1 Tangents" param shape caption = "Tangent Shape" enum = "disk" "polygon" "line" "ellipse" default = 0 hint = "Determines shape of tangent trap" endparam param disksz caption = "Shape Size" default = 0.4 hint = "Enter size of tangent shapes. For 'Tangent Shape' = line, this is the line length; \ line width is set by parameter 'Line Width'" endparam param numberdisks caption = "Shape Number" default = 7 min = 1 hint = "This parameter determines how many shape traps are placed along the primary parabola path" endparam param centr caption = "Sparabola Center" default = (0, 0) hint = "These are the coordinates of the semicubical parabola 'center'" endparam param pscale caption = "Sparabola Scale" default = 1.0 hint = "This parameter affects the overall size of the semicubical parabola" endparam param rotate caption = "Rotation" default = 0.0 min = -179.9 max = 359.9 hint = "Enter amount of rotation from default of the parabola (0-359 degrees)" endparam param @colorsprd caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param @colormode caption = "Coloring Mode" enum = "ShapeRadial" "FocusRadial" "Quadrant" "Angle" default = 0 hint = "'ShapeRadial' means color index increases from tangent shape center outwards; \ 'FocusRadial' means index increases from trap center outward" endparam param sides caption = "Polygon Order" default = 4 min = 3 hint = "Enter number of sides of polygon" endparam param linewdth caption = "Line Width" default = 0.01 hint = "This is the width of the line if 'Tangent Shape' is set to 'line'" endparam param elongate caption = "Ellipse Eccentricity" default = 0.6 min = 0.0 max = 0.95 hint = "This setting (0.0-0.95)affects the elongation of the ellipse if 'Tangent Shape' \ is set to 'ellipse'; 0.0 reverts to a circle" endparam param varydisksz caption = "Vary Shape?" default = FALSE hint = "If set, the value of the trap will modify the tangent shape radius each iteration; \ parameter 'ShapeFeedback' can be used to modulate the variation" endparam param diskstp caption = "ShapeFeedback" default = 1.0 hint = "If 'Vary Shape' is set, this setting adjusts the amount of variation" endparam param varyrotation caption = "Vary Rotation?" default = FALSE hint = "If set, the value of the trap will modify the parabola rotation each iteration; \ parameter 'RotationFeedback' can be used to modulate the variation" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the parabola size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" endparam param varycenter caption = "Vary Center?" default = FALSE hint = "If set, the value of the trap will modify the parabola focus each iteration; \ parameter 'CenterFeedback' can be used to modulate the variation" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" endparam param varyline caption = "Vary LineWidth?" default = FALSE hint = "If set, the value of the trap will modify the line width each \ iteration; parameter 'LineFeedback' can be used to modulate the variation. \ Only applies to 'Tangent Shape' = 'line'" endparam param linestp caption = "LineFeedback" default = 1.0 hint = "If 'Vary LineWidth' is set, this setting adjusts the amount of variation" endparam param varyellipse caption = "Vary Eccentricity?" default = FALSE hint = "If set, the value of the trap will modify the ellipse elongation each \ iteration; parameter 'EllipseFeedback' can be used to modulate the variation. \ Only applies to 'Tangent Shape' = 'ellipse'" endparam param ellipsestp caption = "EllipseFeedback" default = 1.0 hint = "If 'Vary Eccentricity' is set, this setting adjusts the amount of variation" endparam param onerange caption = "Single Range?" default = FALSE hint = "If enabled, a single color range will be used; otherwise, the number of \ color ranges is equal to the number of tangent shapes set by 'Shape Number'" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" endparam } jam-NephroidTrap { ; jam version 010910 ; The nephroid is an epicycloid defined by x = a(3cos(theta)-cos(3*theta)), ; y = a(3sin(theta)-sin(3*theta)). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on nephroid closest to #z (zinput) ; First, center z on the nephroid center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on nephroid (i.e., on origin-#z radial vector) tempx = scale * ( 3 * cos(temp) - cos( 3 * temp)) tempy = scale * ( 3 * sin(temp) - sin( 3 * temp)) tempc = tempx + flip( tempy ) if @polar if @mutantpolar tempc = abs(tempx) * exp( flip( tempy )) else tempc = (tempx/cos(zangle)) * exp( flip( zangle )) endif ; @mutantpolar endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Nephroid Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param nscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the nephroid" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the nephroid should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of nephroid center" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the nephroid potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param mutantpolar caption = "Mutant Polars?" default = FALSE hint = "Optional interpretation; only active if param 'Polar Coordinates' \ is also set" visible = @polar endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-CardioidTrap { ; jam version 010911 ; The cardioid is defined by r = 2a(1 + cos(theta)). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on cardioid closest to #z (zinput) ; First, center z on the cardioid cusp ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on cardioid (i.e., on origin-#z radial vector) tempx = scale * ( 1 + cos( temp )) tempc = tempx * exp( flip( temp )) if !@polar tempc = real(ztemp) + flip(tempx) endif ; @polar zold = tempc ; Now transmute the trapped cardioid point 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Cardioid Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the cardioid" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the cardioid should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of cardioid center (cusp)" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the cardioid potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-RoseTrap { ; jam version 010922 ; The rose is defined by r = a*sin(N*theta), ; where N = number of leaves (odd N) or ; 2N = number of leaves (even N). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 @leafs % 2 == 0 ; even number of leaves int leaves = round(@leafs/2) else int leaves = @leafs endif if @towatch == 0 int watch = #maxiter else int watch = @skippediters + @towatch endif ; towatch int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on rose closest to #z (zinput) ; First, center z on the rose center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on rose (i.e., on origin-#z radial vector) tempx = scale * sin( leaves * temp ) tempc = tempx * exp( flip( temp )) if !@polar tempc = real(ztemp) + flip( tempx ) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Rose Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the rose" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the rose should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of rose center" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param leafs caption = "Rose Leaves" default = 4 min = 2 hint = "Number of leaves in the rose (odd numbers), or twice the number of leaves \ (even numbers)" endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the rose potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-EllipseTrap { ; jam version 010923 ; DO NOT USE --- use bug-corrected Ellipse Trap 2 instead. ; This version, here for compatibility, will someday be removed, and is not up-to-date! ; Exponent = 2 for ellipse; ; Astroids, sub- and superellipses can also be generated. init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation rotation = -rotation ; eliminates negation in every loop/iteration complex center = @centr, float centerstep = @centerstp float a = @ea, float b = @eb ; ellipse width, height float heightstep = @heightstp, float widthstep = @widthstp float exponent = @expon, float exponentstep = @exponstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) if @towatch == 0 int watch = #maxiter else int watch = @skippediters + @towatch endif ; towatch int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize z, if desired if ( @initialization == 0 ) zinput = #z elseif ( @initialization == 1 ) zinput = 1/#z elseif ( @initialization == 2 ) zinput = #z * #z elseif ( @initialization == 3 ) zinput = 1 / ( #z * #z ) elseif ( @initialization == 4 ) zinput = log(#z) elseif ( @initialization == 5 ) zinput = exp( #z) elseif ( @initialization == 6 ) zinput = #z^#z elseif ( @initialization == 7 ) zinput = sin( #z ) elseif ( @initialization == 8 ) zinput = cos( #z ) elseif ( @initialization == 9 ) zinput = tan( #z ) elseif ( @initialization == 10 ) zinput = asin( #z ) elseif ( @initialization == 11 ) zinput = acos( #z ) elseif ( @initialization == 12 ) zinput = atan( #z ) elseif ( @initialization == 13 ) zinput = sinh( #z ) elseif ( @initialization == 14 ) zinput = cosh( #z ) elseif ( @initialization == 15 ) zinput = tanh( #z ) elseif ( @initialization == 16 ) zinput = asinh( #z ) elseif ( @initialization == 17 ) zinput = acosh( #z ) elseif ( @initialization == 18 ) zinput = atanh( #z ) elseif ( @initialization == 19 ) zinput = log( 1/#z ) elseif ( @initialization == 20 ) zinput = log( log( #z )) elseif ( @initialization == 21 ) zinput = exp( -#z ) elseif ( @initialization == 22 ) zinput = exp( 1/#z ) elseif ( @initialization == 23 ) zinput = #z^(-#z) elseif ( @initialization == 24 ) zinput = sin( #z ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( #z ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( #z ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( #z ) elseif ( @initialization == 28 ) zinput = 1/cos( #z ) elseif ( @initialization == 29 ) zinput = 1/sin( #z ) elseif ( @initialization == 30 ) zinput = cotan( #z ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( #z ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( #z ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = #z^(#z) zinput = #z^zinput elseif ( @initialization == 34 ) zinput = #z^(#z) zinput = 1/( #z^zinput ) elseif ( @initialization == 35 ) zinput = log(-#z) elseif ( @initialization == 36 ) zinput = 1/log( #z ) elseif ( @initialization == 37 ) zinput = #z * log( #z ) elseif ( @initialization == 38 ) zinput = sin( #z ) / #z elseif ( @initialization == 39 ) zinput = cos( #z ) / #z elseif ( @initialization == 40 ) zinput = sin( #z ) * cos( #z ) elseif ( @initialization == 41 ) zinput = sin( #z^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/#z ) elseif ( @initialization == 43 ) zinput = #z * exp( #z ) elseif ( @initialization == 44 ) zinput = #z * exp( -#z ) elseif ( @initialization == 45 ) zinput = #z * exp( 1/#z ) elseif ( @initialization == 46 ) zinput = #z * exp( -1/#z ) elseif ( @initialization == 47 ) zinput = #z * #z * #z elseif ( @initialization == 48 ) zinput = 1 / ( #z * #z * #z ) elseif ( @initialization == 49 ) zinput = atan( 1 / #z ) elseif ( @initialization == 50 ) zinput = acos( 1 / #z ) elseif ( @initialization == 51 ) zinput = asin( 1 / #z ) elseif ( @initialization == 52 ) zinput = tan( #z ) / #z elseif ( @initialization == 53 ) zinput = cotan( #z ) / #z elseif ( @initialization == 54 ) zinput = 1 / ( #z * cos( #z )) elseif ( @initialization == 55 ) zinput = 1 / ( #z * sin( #z )) elseif ( @initialization == 56 ) zinput = #z * sin( #z ) elseif ( @initialization == 57 ) zinput = #z * cos( #z ) elseif ( @initialization == 58 ) zinput = #z * tan( #z ) elseif ( @initialization == 59 ) zinput = #z * cotan( #z ) elseif ( @initialization == 60 ) zinput = #z/cos( #z ) elseif ( @initialization == 61 ) zinput = #z/sin( #z ) elseif ( @initialization == 62 ) zinput = sin( 1/#z ) elseif ( @initialization == 63 ) zinput = cos( 1/#z ) elseif ( @initialization == 64 ) zinput = tan( 1/#z ) elseif ( @initialization == 65 ) zinput = cotan( 1/#z ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/#z ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/#z ) elseif ( @initialization == 68 ) zinput = cotanh( #z ) elseif ( @initialization == 69 ) zinput = 1/cosh( #z ) elseif ( @initialization == 70 ) zinput = 1/sinh( #z ) elseif ( @initialization == 71 ) zinput = atanh( 1/#z ) elseif ( @initialization == 72 ) zinput = acosh( 1/#z ) elseif ( @initialization == 73 ) zinput = asinh( 1/#z ) else ; @initialization == 74 zinput = #z^@zpower endif ; initialization 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 ; Find coordinates and angle of point on ellipse closest to #z (zinput) ; First, center z on the ellipse center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( rotation)) ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @history if @histype == 0 zold = ztemp - zold, ztemp = zold elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold, zold = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold, zold = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Find point on ellipse (i.e., on origin-#z radial vector) if !@mutant temp = abs(tan(zangle)) tempx = a * b * sqrt(1 + temp * temp)/(b^exponent + (a^exponent * temp^exponent))^(1/exponent) tempc = scale * tempx * exp(flip(zangle)) else if @mutanttype == 0 tempc = scale * ( abs(real(ztemp)/a)^exponent + flip( abs(imag(ztemp)/b)^exponent )) elseif @mutanttype == 1 temp = abs(tan(zangle)) tempx = scale * a * b / ( b^exponent + (a * temp)^exponent )^(1/exponent) tempy = temp * tempx tempc = tempx + flip( tempy ) elseif @mutanttype == 2 tempc = scale^exponent * ( (real(ztemp)/a)^exponent + flip( imag(ztemp)/b)^exponent ) endif ; mutanttype endif ; mutant if !@polar tempc = real(ztemp) + flip(cabs(tempc)) endif ; @polar ; Now transmute the trapped ellipse point if desired 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 ) else ; @transmogrify == 74 tempc = tempc^@tpower endif ; transmogrify2 endif ; transmogrify1 ; Save value for later turbulence tlast = tempc cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( #z + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( #z - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( #z * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( #z / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / #z ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( #z ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ #z ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (#z + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( #z * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( #z - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( #z + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( #z * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( #z / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / #z ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( #z ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ #z ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( #z - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( #z + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( #z * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( #z / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / #z )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( #z ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ #z )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( #z - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( #z + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( #z * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( #z / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / #z )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( #z ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ #z )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) if !@ringstyle count = count + 1 trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 elseif itrapped == -1 ; must be the 2nd threshold value if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 elseif itrapped == -1 ; must be the 2nd threshold value if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varyheight b = b + heightstep * b * value * sign endif ; varyheight if @varywidth a = a + widthstep * a * value * sign endif ; varywidth if @varythresh thresh = thresh + threshstep * thresh * value * sign if @ringstyle if @whattotrap < 12 innerradius = thresh - @ringwidth else innerradius = thresh + @ringwidth endif ; whattotrap endif ; ringstyle endif ; varythresh if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyexpon exponent = exponent + exponentstep * exponent * value * sign endif ; varyexpon if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; product3 ca3 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance _color = 3.0 * spread * cabs( zttrapped - ctrapped ) elseif ( @colorby == 1 ) ; iteration _color = 0.3 * spread * itrapped elseif ( @colorby == 2 ) ; magnitude _color = 0.25 * spread * cabs( ztrapped ) elseif ( @colorby == 3 ) ; test _color = spread * trapped1 elseif ( @colorby == 4 ) ; trap magnitude _color = spread * cabs( ctrapped ) elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp _color = ( spread * temp ) / twopi elseif ( @colorby == 6 ) ; trap angle _color = ( spread * catrapped ) / twopi elseif ( @colorby == 7 ) ; modulated magnitude _color = spread * cabs( zttrapped ) elseif ( @colorby == 8 ) ; modulated angle _color = ( spread * zatrapped ) / twopi elseif ( @colorby == 9 ) ; real _color = spread * abs( real( ztrapped )) elseif ( @colorby == 10 ) ; trap real _color = spread * abs( real( ctrapped )) elseif ( @colorby == 11 ) ; modulated real _color = spread * abs( real( zttrapped )) elseif ( @colorby == 12 ) ; imaginary _color = spread * abs( imag( ztrapped )) elseif ( @colorby == 13 ) ; trap imaginary _color = spread * abs( imag( ctrapped )) elseif ( @colorby == 14 ) ; modulated imaginary _color = spread * abs( real( zttrapped )) endif ; _colorby if @ranges == 1 #index = _color + _coloradjust else #index = ((_color + _coloradjust) + (itrapped % @ranges)) / @ranges endif ; ranges else #solid = TRUE endif ; itrapped default: title = "Ellipse Trap Old" 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" default = 0 hint = "What type of value will be trapped?" endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the ellipse should be rotated from its default position" endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of ellipse center" endparam param tscale caption = "Scale" default = 1.0 min = 0.0 hint = "This parameter determines the size (radius) of the ellipse" endparam param expon caption = "Ellipse Exponent" default = 2.0 hint = "Use 2 for ellipse, >2 for superellipse, <1 for astroid, 1-2 for subellipse" endparam param ea caption = "Ellipse Width" default = 1.0 min = 0.0 hint = "Size in x-direction" endparam param eb caption = "Ellipse Height" default = 0.5 min = 0.0 hint = "Size in y-direction" 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" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" 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" default = 0 hint = "The point, t, on the ellipse potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" endparam param threshold caption = "Threshold Value" default = 0.5 hint = "Depth of trap well if '1st Threshold', 'Last Threshold', or 'Count \ Threshold' is chosen for parameter 'Trap What'; maximum value that will be trapped" endparam param varymode caption = "Feedback Mode" enum = "trapped" "not trapped" "always" default = 0 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" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the ellipse size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" endparam param varyrotation caption = "Vary Rotation?" default = FALSE hint = "If set, the value of the trap will modify the ellipse rotation each iteration; \ parameter 'RotationFeedback' can be used to modulate the variation" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" endparam param varycenter caption = "Vary Center?" default = FALSE hint = "If set, the value of the trap will modify the coordinates of the ellipse \ center each iteration; parameter 'CenterFeedback' can be used to modulate the variation" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" endparam param varyheight caption = "Vary Height?" default = FALSE hint = "If set, the value of the trap will modify the coordinates of the ellipse \ center each iteration; parameter 'HeightFeedback' can be used to modulate the variation" endparam param heightstp caption = "HeightFeedback" default = 1.0 hint = "If 'Vary Height' is set, this setting adjusts the amount of variation" endparam param varywidth caption = "Vary Width?" default = FALSE hint = "If set, the value of the trap will modify the coordinates of the ellipse \ center each iteration; parameter 'WidthFeedback' can be used to modulate the variation" endparam param widthstp caption = "WidthFeedback" default = 1.0 hint = "If 'Vary Width' is set, this setting adjusts the amount of variation" endparam param varyexpon caption = "Vary Exponent?" default = FALSE hint = "If set, the value of the trap will modify the ellipse exponent each iteration; \ parameter 'ExponentFeedback' can be used to modulate the variation" endparam param exponstp caption = "ExponentFeedback" default = 1.0 hint = "If 'Vary Exponent' is set, this setting adjusts the amount of variation" 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" endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" endparam param mutant caption = "Enable Mutant?" default = FALSE hint = "Alternate, non-elliptical coloring algorithms; select flavor with \ parameter 'Mutant Type'" endparam param mutanttype caption = "Mutant Type" enum = "1" "2" "3" default = 0 hint = "Flavor of mutant algorithm if parameter 'Enable Mutant' is set" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Product 1) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (Product 3) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Degree of texturizing, if parameter 'Enable Turbulence' is enabled" endparam param varyturb caption = "Vary Turbulence?" 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" endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to one \ of the 'Threshold' options, then Threshold becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to a 'Threshold' \ option, this parameter determines the width of the ring trap" endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam } jam-EllipseTrap2 { ; jam version 011113. Corrects history bug in older version ; Exponent = 2 for ellipse; ; Astroids, sub- and superellipses can also be generated. init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation rotation = -rotation ; eliminates negation in every loop/iteration complex center = @centr, float centerstep = @centerstp float a = @ea, float b = @eb ; ellipse width, height float heightstep = @heightstp, float widthstep = @widthstp float exponent = @expon, float exponentstep = @exponstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on ellipse closest to #z (zinput) ; First, center z on the ellipse center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle test = zangle*@sprangfactor else test = zangle endif ; @sprangle ; Find point on ellipse (i.e., on origin-#z radial vector) if !@mutant temp = abs(tan(test)) tempx = a * b * sqrt(1 + temp * temp)/(b^exponent + (a^exponent * temp^exponent))^(1/exponent) tempc = scale * tempx * exp(flip(test)) else if @mutanttype == 0 tempc = scale * ( abs(real(ztemp)/a)^exponent + flip( abs(imag(ztemp)/b)^exponent )) elseif @mutanttype == 1 temp = abs(tan(test)) tempx = scale * a * b / ( b^exponent + (a * temp)^exponent )^(1/exponent) tempy = temp * tempx tempc = tempx + flip( tempy ) elseif @mutanttype == 2 tempc = scale^exponent * ( (real(ztemp)/a)^exponent + flip( imag(ztemp)/b)^exponent ) endif ; mutanttype endif ; mutant if !@polar tempc = real(ztemp) + flip(cabs(tempc)) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varyheight b = b + heightstep * b * value * sign endif ; varyheight if @varywidth a = a + widthstep * a * value * sign endif ; varywidth if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyexpon exponent = exponent + exponentstep * exponent * value * sign endif ; varyexpon if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Ellipse Trap 2" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale" default = 0.25 min = 0.0 hint = "This parameter determines the size (radius) of the ellipse" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the ellipse should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of ellipse center" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param expon caption = "Ellipse Exponent" default = 2.0 hint = "Use 2 for ellipse, >2 for superellipse, <1 for astroid, 1-2 for subellipse" endparam param varyexpon caption = "Vary Exponent?" default = FALSE hint = "If set, the value of the trap will modify the ellipse exponent each iteration; \ parameter 'ExponentFeedback' can be used to modulate the variation" endparam param exponstp caption = "ExponentFeedback" default = 1.0 hint = "If 'Vary Exponent' is set, this setting adjusts the amount of variation" visible = @varyexpon endparam param ea caption = "Ellipse Width" default = 1.0 min = 0.0 hint = "Size in x-direction" endparam param varywidth caption = "Vary Width?" default = FALSE hint = "If set, the value of the trap will modify the coordinates of the ellipse \ center each iteration; parameter 'WidthFeedback' can be used to modulate the variation" endparam param widthstp caption = "WidthFeedback" default = 1.0 hint = "If 'Vary Width' is set, this setting adjusts the amount of variation" visible = @varywidth endparam param eb caption = "Ellipse Height" default = 0.5 min = 0.0 hint = "Size in y-direction" endparam param varyheight caption = "Vary Height?" default = FALSE hint = "If set, the value of the trap will modify the coordinates of the ellipse \ center each iteration; parameter 'HeightFeedback' can be used to modulate the variation" endparam param heightstp caption = "HeightFeedback" default = 1.0 hint = "If 'Vary Height' is set, this setting adjusts the amount of variation" visible = @varyheight endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the ellipse potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param mutant caption = "Enable Mutant?" default = FALSE hint = "Alternate, non-elliptical coloring algorithms; select flavor with \ parameter 'Mutant Type'" endparam param mutanttype caption = "Mutant Type" enum = "1" "2" "3" default = 0 hint = "Flavor of mutant algorithm if parameter 'Enable Mutant' is set" visible = @mutant endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || \ @varycenter || @varyspread || @varyexpon || @varyheight || @varywidth) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || \ @varycenter || @varyspread || @varyexpon || @varyheight || @varywidth) endparam } jam-parabolaTrap2 { ; jam version 011228 ; The parabola here is defined by the equation, ; y = A * x^2. init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on parabola closest to #z (zinput) ; First, center z on the parabola center ztemp = zinput - center ; Compute rotated #z, and scale ztemp = scale * ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on parabola (i.e., on origin-#z radial vector) tempx = real(ztemp) tempy = @scale2*tempx*tempx tempc = tempx + flip( tempy ) if @polar if @mutantpolar tempc = abs(tempx) * exp( flip( tempy )) else tempc = cabs(tempc) * exp( flip( temp )) endif ; @mutantpolar endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Parabola Trap 2" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param nscale caption = "Z Scale" default = 0.25 hint = "This parameter determines the overall size of the curve by scaling #z" endparam param scale2 caption = "Curve Scale" default = 0.3 hint = "This parameter determines the specific parabola curve scale" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the parabola should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of parabola origin" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'; only affects \ normal (not mutant) polar coordinates" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the parabola potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param mutantpolar caption = "Mutant Polars?" default = FALSE hint = "Optional interpretation; only active if param 'Polar Coordinates' \ is also set" visible = @polar endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-sechTrap { ; jam version 011228 ; The hyperbolic secant graph here is defined by the equation, ; y = sech( scale*x ). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on sech graph closest to #z (zinput) ; First, center z on the sech graph center ztemp = zinput - center ; Compute rotated #z, and scale ztemp = scale * ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on sech graph (i.e., on origin-#z radial vector) tempx = real(ztemp) tempy = @scale2/cosh(tempx) tempc = tempx + flip( tempy ) if @polar if @mutantpolar tempc = abs(tempx) * exp( flip( tempy )) else tempc = cabs(tempc) * exp( flip( temp )) endif ; @mutantpolar endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Sech Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param nscale caption = "Z Scale" default = 0.25 hint = "This parameter determines the overall size of the curve by scaling #z" endparam param scale2 caption = "Curve Scale" default = 0.3 hint = "This parameter determines the specific sech graph curve scale" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the sech graph should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of sech graph origin" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'; only affects \ normal (not mutant) polar coordinates" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the sech graph potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param mutantpolar caption = "Mutant Polars?" default = FALSE hint = "Optional interpretation; only active if param 'Polar Coordinates' \ is also set" visible = @polar endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (fBm) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-catenaryTrap { ; jam version 011228 ; The catenary here is defined by the equation, ; y = scale * cosh( x/scale ). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on catenary closest to #z (zinput) ; First, center z on the catenary center ztemp = zinput - center ; Compute rotated #z, and scale ztemp = scale * ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on catenary (i.e., on origin-#z radial vector) tempx = real(ztemp) tempy = @scale2 * cosh( tempx/@scale2 ) tempc = tempx + flip( tempy ) if @polar if @mutantpolar tempc = abs(tempx) * exp( flip( tempy )) else tempc = cabs(tempc) * exp( flip( temp )) endif ; @mutantpolar endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Catenary Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param nscale caption = "Z Scale" default = 0.25 hint = "This parameter determines the overall size of the curve by scaling #z" endparam param scale2 caption = "Curve Scale" default = 0.3 hint = "This parameter determines the specific catenary curve scale" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the catenary should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of catenary origin" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'; only affects \ normal (not mutant) polar coordinates" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the catenary potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param mutantpolar caption = "Mutant Polars?" default = FALSE hint = "Optional interpretation; only active if param 'Polar Coordinates' \ is also set" visible = @polar endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-kampyleTrap { ; jam version 010911 ; The Kampyle of Eudoxus is defined by r = a/cos(theta)^2. init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on kampyle closest to #z (zinput) ; First, center z on the kampyle origin ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on kampyle (i.e., on origin-#z radial vector) tempy = cos(temp) tempx = scale / (tempy*tempy) tempc = tempx * exp( flip( temp )) if !@polar tempc = real(ztemp) + flip(tempx) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Kampyle of Eudoxus Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the kampyle" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the kampyle should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of kampyle center (cusp)" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the kampyle potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (fBm) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-julimanTrap { ; jam version 011201 init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode complex jc = #pixel, int pixformula = 0, complex zjuliman = (0,0) int mandycount = 0, bool firstflag = TRUE pixformula = @pixelformula if pixformula != 0 ; Pixel/constant initialization section pixformula = pixformula - 1 if pixformula == 0 jc = jc * jc elseif pixformula == 1 jc = jc * jc * jc elseif pixformula == 2 zextra = jc * jc jc = zextra * zextra elseif pixformula <= 40 if pixformula <= 20 if pixformula == 3 jc = jc ^ @ppower elseif pixformula == 4 jc = 1/jc elseif pixformula == 5 jc = sqrt(jc) elseif pixformula == 6 jc = 1 / ( jc * jc ) elseif pixformula == 7 jc = log(jc) elseif pixformula == 8 jc = exp( jc) elseif pixformula == 9 jc = jc^jc elseif pixformula == 10 jc = sin( jc ) elseif pixformula == 11 jc = cos( jc ) elseif pixformula == 12 jc = tan( jc ) elseif pixformula == 13 jc = asin( jc ) elseif pixformula == 14 jc = acos( jc ) elseif pixformula == 15 jc = atan( jc ) elseif pixformula == 16 jc = sinh( jc ) elseif pixformula == 17 jc = cosh( jc ) elseif pixformula == 18 jc = tanh( jc ) elseif pixformula == 19 jc = asinh( jc ) else ; pixformula == 20 jc = acosh( jc ) endif ; pixformula-3 else ; 20 < pixformula <= 40 if pixformula == 21 jc = atanh( jc ) elseif pixformula == 22 jc = log( 1/jc ) elseif pixformula == 23 jc = log( log( jc )) elseif pixformula == 24 jc = exp( -jc ) elseif pixformula == 25 jc = exp( 1/jc ) elseif pixformula == 26 jc = jc^(-jc) elseif pixformula == 27 zextra = sin( jc ) jc = zextra * zextra elseif pixformula == 28 zextra = cos( jc ) jc = zextra * zextra elseif pixformula == 29 zextra = tan( jc ) jc = zextra * zextra elseif pixformula == 30 jc = cotan( jc ) elseif pixformula == 31 jc = 1/cos( jc ) elseif pixformula == 32 jc = 1/sin( jc ) elseif pixformula == 33 zextra = cotan( jc ) jc = zextra * zextra elseif pixformula == 34 zextra = 1/cos( jc ) jc = zextra * zextra elseif pixformula == 35 zextra = 1/sin( jc ) jc = zextra * zextra elseif pixformula == 36 zextra = jc^(jc) jc = jc^zextra elseif pixformula == 37 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif pixformula == 38 jc = log(-jc) elseif pixformula == 39 jc = 1/log( jc ) else ; pixformula == 40 jc = jc * log( jc ) endif ; pixformula-3 endif ; pixformula-2 elseif pixformula <= 60 if pixformula == 41 jc = sin( jc ) / jc elseif pixformula == 42 jc = cos( jc ) / jc elseif pixformula == 43 jc = sin( jc ) * cos( jc ) elseif pixformula == 44 jc = sin( jc^2 ) elseif pixformula == 45 jc = exp( -1/jc ) elseif pixformula == 46 jc = jc * exp( jc ) elseif pixformula == 47 jc = jc * exp( -jc ) elseif pixformula == 48 jc = jc * exp( 1/jc ) elseif pixformula == 49 jc = jc * exp( -1/jc ) elseif pixformula == 50 jc = jc * jc * jc elseif pixformula == 51 jc = 1 / ( jc * jc * jc ) elseif pixformula == 52 jc = atan( 1 / jc ) elseif pixformula == 53 jc = acos( 1 / jc ) elseif pixformula == 54 jc = asin( 1 / jc ) elseif pixformula == 55 jc = tan( jc ) / jc elseif pixformula == 56 jc = cotan( jc ) / jc elseif pixformula == 57 jc = 1 / ( jc * cos( jc )) elseif pixformula == 58 jc = 1 / ( jc * sin( jc )) elseif pixformula == 59 jc = jc * sin( jc ) else ; pixformula == 60 jc = jc * cos( jc ) endif ; pixformula-2 else ; 60 < pixformula <= 77 if pixformula == 61 jc = jc * tan( jc ) elseif pixformula == 62 jc = jc * cotan( jc ) elseif pixformula == 63 jc = jc/cos( jc ) elseif pixformula == 64 jc = jc/sin( jc ) elseif pixformula == 65 jc = sin( 1/jc ) elseif pixformula == 66 jc = cos( 1/jc ) elseif pixformula == 67 jc = tan( 1/jc ) elseif pixformula == 68 jc = cotan( 1/jc ) elseif pixformula == 69 jc = 1/cos( 1/jc ) elseif pixformula == 70 jc = 1/sin( 1/jc ) elseif pixformula == 71 jc = cotanh( jc ) elseif pixformula == 72 jc = 1/cosh( jc ) elseif pixformula == 73 jc = 1/sinh( jc ) elseif pixformula == 74 jc = atanh( 1/jc ) elseif pixformula == 75 jc = acosh( 1/jc ) elseif pixformula == 76 jc = asinh( 1/jc ) else ; pixformula == 77 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + @coeffpc * jc^@exponentpc endif ; pixformula-2 endif ; pixformula-1 endif ; pixformula-0 loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find juliman point corresponding to transformed #z (zinput) ; First, center z on the juliman center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history if @mandymode == 1 ; continue with Mandy iterations based on average ztemp = (zjuliman + ztemp)/2 elseif @mandymode == 2 ; continue iteration of previous result, ignoring current ztemp if !firstflag ztemp = zjuliman else firstflag = FALSE endif ; firstflag endif ; @mandymode ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor endif ; @sprangle ; Find juliman point zjuliman = ztemp mandycount = 0 while mandycount < @mandyiters if @plottype == 0 ; Mandelbrot zjuliman = zjuliman * zjuliman + jc tempc = zjuliman else ; Julia zjuliman = jc * jc + zjuliman tempc = zjuliman endif ; @plottype mandycount = mandycount + 1 endwhile ; mandycount tempc = tempc * scale if @polar tempc = cabs(tempc) * exp( flip( temp )) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else _color = ((_color + _coloradjust) + ( itrapped % @ranges )) / @ranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "JuliMan Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 8 hint = "What type of value will be trapped?" endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 11 (sum, difference, etc)" endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param nscale caption = "Scale" default = 1.0 hint = "This parameter scales the juliman size" endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the JuliMan should be rotated from its default position" endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of JuliMan center" endparam param plottype caption = "Trap Type" enum = "Mandelbrot" "Julia" default = 0 endparam param mandyiters caption = "Trap Iterations" default = 1 min = 1 hint = "The number of Mandelbrot or Julia iterations to exectue per fractal iteration" endparam param mandymode caption = "Trap Input" enum = "current z" "cur z + prev t" "previous t" default = 0 hint = "'current z' means the current fractal iterate z is re-initialized \ each iteration, then fed to the trap; 'cur z + prev t' uses the average \ of initialized current z with previous trap result; for 'previous t' \ trap is fed only the previous trap result" endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" "p^p" \ "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" default = 0 hint = "Pixel value can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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)" default = 0 hint = "The point, t, on the JuliMan potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" endparam param threshold caption = "Threshold Value" default = 0.5 hint = "Depth of trap well (maximum value that will be trapped) if one of the \ 'Threshold' options are chosen for param 'Trap What'; also, minimum value \ that will be trapped if 'Trap What' is set to a 'Limit' option. Increase \ value for limit traps" endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then Threshold/Limit becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold' \ option or a 'Limit' option, this parameter determines the width of the ring trap" 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)" 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'" endparam param rfpower caption = "FrontEndReal Power" default = 4.0 hint = "Real(z) exponent if param 'FrontEndReal Warp' is set to 'r^power'" 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" endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping ( but after transmutation)" endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping ( but after transmutation)" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" endparam param cpower caption = "Color Power" default = 3.14159 hint = "Color index exponent if param 'Color Warp Factor' is set to 'c^power'" 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" 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" 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" 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" endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (fBm) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" 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" endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" endparam param varyturb caption = "Vary Turbulence?" 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" endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" endparam param varymode caption = "Feedback Mode" enum = "trapped" "not trapped" "always" default = 0 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" endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the scale size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" endparam param varyrotation caption = "Vary Rotation?" default = FALSE hint = "If set, the value of the trap will modify the JuliMan rotation each iteration; \ parameter 'RotationFeedback' can be used to modulate the variation" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" endparam param varycenter caption = "Vary Center?" default = FALSE hint = "If set, the value of the trap will modify the coordinates of the JuliMan \ center each iteration; parameter 'CenterFeedback' can be used to modulate the variation" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" 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" endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need huge adjustment (.001-10 may \ be useful)" 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)" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" 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)" 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" 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)" 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" endparam } jam-altmanTrap { ; jam version 011201 init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode complex jc = #pixel, complex zjuliman = (0,0) int mandycount = 0, bool firstflag = TRUE, int altindex = 0, bool done = FALSE int pixformula = @pixelformula if pixformula != 0 ; Pixel/constant initialization section pixformula = pixformula - 1 if pixformula == 0 jc = jc * jc elseif pixformula == 1 jc = jc * jc * jc elseif pixformula == 2 zextra = jc * jc jc = zextra * zextra elseif pixformula <= 40 if pixformula <= 20 if pixformula == 3 jc = jc ^ @ppower elseif pixformula == 4 jc = 1/jc elseif pixformula == 5 jc = sqrt(jc) elseif pixformula == 6 jc = 1 / ( jc * jc ) elseif pixformula == 7 jc = log(jc) elseif pixformula == 8 jc = exp( jc) elseif pixformula == 9 jc = jc^jc elseif pixformula == 10 jc = sin( jc ) elseif pixformula == 11 jc = cos( jc ) elseif pixformula == 12 jc = tan( jc ) elseif pixformula == 13 jc = asin( jc ) elseif pixformula == 14 jc = acos( jc ) elseif pixformula == 15 jc = atan( jc ) elseif pixformula == 16 jc = sinh( jc ) elseif pixformula == 17 jc = cosh( jc ) elseif pixformula == 18 jc = tanh( jc ) elseif pixformula == 19 jc = asinh( jc ) else ; pixformula == 20 jc = acosh( jc ) endif ; pixformula-3 else ; 20 < pixformula <= 40 if pixformula == 21 jc = atanh( jc ) elseif pixformula == 22 jc = log( 1/jc ) elseif pixformula == 23 jc = log( log( jc )) elseif pixformula == 24 jc = exp( -jc ) elseif pixformula == 25 jc = exp( 1/jc ) elseif pixformula == 26 jc = jc^(-jc) elseif pixformula == 27 zextra = sin( jc ) jc = zextra * zextra elseif pixformula == 28 zextra = cos( jc ) jc = zextra * zextra elseif pixformula == 29 zextra = tan( jc ) jc = zextra * zextra elseif pixformula == 30 jc = cotan( jc ) elseif pixformula == 31 jc = 1/cos( jc ) elseif pixformula == 32 jc = 1/sin( jc ) elseif pixformula == 33 zextra = cotan( jc ) jc = zextra * zextra elseif pixformula == 34 zextra = 1/cos( jc ) jc = zextra * zextra elseif pixformula == 35 zextra = 1/sin( jc ) jc = zextra * zextra elseif pixformula == 36 zextra = jc^(jc) jc = jc^zextra elseif pixformula == 37 zextra = jc^(jc) jc = 1/( jc^zextra ) elseif pixformula == 38 jc = log(-jc) elseif pixformula == 39 jc = 1/log( jc ) else ; pixformula == 40 jc = jc * log( jc ) endif ; pixformula-3 endif ; pixformula-2 elseif pixformula <= 60 if pixformula == 41 jc = sin( jc ) / jc elseif pixformula == 42 jc = cos( jc ) / jc elseif pixformula == 43 jc = sin( jc ) * cos( jc ) elseif pixformula == 44 jc = sin( jc^2 ) elseif pixformula == 45 jc = exp( -1/jc ) elseif pixformula == 46 jc = jc * exp( jc ) elseif pixformula == 47 jc = jc * exp( -jc ) elseif pixformula == 48 jc = jc * exp( 1/jc ) elseif pixformula == 49 jc = jc * exp( -1/jc ) elseif pixformula == 50 jc = jc * jc * jc elseif pixformula == 51 jc = 1 / ( jc * jc * jc ) elseif pixformula == 52 jc = atan( 1 / jc ) elseif pixformula == 53 jc = acos( 1 / jc ) elseif pixformula == 54 jc = asin( 1 / jc ) elseif pixformula == 55 jc = tan( jc ) / jc elseif pixformula == 56 jc = cotan( jc ) / jc elseif pixformula == 57 jc = 1 / ( jc * cos( jc )) elseif pixformula == 58 jc = 1 / ( jc * sin( jc )) elseif pixformula == 59 jc = jc * sin( jc ) else ; pixformula == 60 jc = jc * cos( jc ) endif ; pixformula-2 else ; 60 < pixformula <= 77 if pixformula == 61 jc = jc * tan( jc ) elseif pixformula == 62 jc = jc * cotan( jc ) elseif pixformula == 63 jc = jc/cos( jc ) elseif pixformula == 64 jc = jc/sin( jc ) elseif pixformula == 65 jc = sin( 1/jc ) elseif pixformula == 66 jc = cos( 1/jc ) elseif pixformula == 67 jc = tan( 1/jc ) elseif pixformula == 68 jc = cotan( 1/jc ) elseif pixformula == 69 jc = 1/cos( 1/jc ) elseif pixformula == 70 jc = 1/sin( 1/jc ) elseif pixformula == 71 jc = cotanh( jc ) elseif pixformula == 72 jc = 1/cosh( jc ) elseif pixformula == 73 jc = 1/sinh( jc ) elseif pixformula == 74 jc = atanh( 1/jc ) elseif pixformula == 75 jc = acosh( 1/jc ) elseif pixformula == 76 jc = asinh( 1/jc ) else ; pixformula == 77 jc = @coeffpa * jc^@exponentpa + @coeffpb * jc^@exponentpb + @coeffpc * jc^@exponentpc endif ; pixformula-2 endif ; pixformula-1 endif ; pixformula-0 loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find AltMan point corresponding to transformed #z (zinput) ; First, center z on the AltMan center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history if @mandymode == 1 ; continue with Mandy iterations based on average ztemp = (zjuliman + ztemp)/2 elseif @mandymode == 2 ; continue iteration of previous result, ignoring current ztemp if !firstflag ztemp = zjuliman else firstflag = FALSE endif ; firstflag endif ; @mandymode ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find altman point zjuliman = ztemp mandycount = 0 while mandycount < @mandyiters altindex = altindex + 1 if @freq2 != 0 if altindex % @freq2 == 0 ; execute series 2 if @plottype == 0 ; Mandelbrot zjuliman = zjuliman^@power2 + jc, done = TRUE tempc = zjuliman else ; Julia zjuliman = jc^@power2 + zjuliman tempc = zjuliman endif ; @plottype endif ; altindex endif ; @freq2 if @freq3 != 0 if altindex % @freq3 == 0 ; execute series 3 if @plottype == 0 ; Mandelbrot zjuliman = zjuliman^@power3 + jc, done = TRUE tempc = zjuliman else ; Julia zjuliman = jc^@power3 + zjuliman tempc = zjuliman endif ; @plottype endif ; altindex endif ; @freq3 if @freq4 != 0 if altindex % @freq4 == 0 ; execute series 4 if @plottype == 0 ; Mandelbrot zjuliman = zjuliman^@power4 + jc, done = TRUE tempc = zjuliman else ; Julia zjuliman = jc^@power4 + zjuliman tempc = zjuliman endif ; @plottype endif ; altindex endif ; freq4 if @freq5 != 0 if altindex % @freq5 == 0 ; execute series 5 if @plottype == 0 ; Mandelbrot zjuliman = zjuliman^@power5 + jc, done = TRUE tempc = zjuliman else ; Julia zjuliman = jc^@power5 + zjuliman tempc = zjuliman endif ; @plottype endif ; altindex endif ; @freq5 if @altmode == 0 if !done if @plottype == 0 ; Mandelbrot zjuliman = zjuliman^@power1 + jc, done = TRUE tempc = zjuliman else ; Julia zjuliman = jc^@power1 + zjuliman tempc = zjuliman endif ; @plottype endif ; done else if @plottype == 0 ; Mandelbrot zjuliman = zjuliman^@power1 + jc, done = TRUE tempc = zjuliman else ; Julia zjuliman = jc^@power1 + zjuliman tempc = zjuliman endif ; @plottype endif ; altmode done = FALSE ; get ready for next loop mandycount = mandycount + 1 endwhile ; mandycount tempc = tempc * scale if @polar tempc = cabs(tempc) * exp( flip( temp )) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else _color = ((_color + _coloradjust) + ( itrapped % @ranges )) / @ranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "AltMan Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 8 hint = "What type of value will be trapped?" endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 11 (sum, difference, etc)" endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param nscale caption = "Scale" default = 1.0 hint = "This parameter scales the AltMan size" endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the AltMan should be rotated from its default position" endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of AltMan center" endparam param plottype caption = "Trap Type" enum = "Mandelbrot" "Julia" default = 0 endparam param mandyiters caption = "Trap Iterations" default = 1 min = 1 hint = "The number of Mandelbrot or Julia iterations to exectue per fractal iteration" endparam param mandymode caption = "Trap Input" enum = "current z" "cur z + prev t" "previous t" default = 0 hint = "'current z' means the current fractal iterate z is re-initialized \ each iteration, then fed to the trap; 'cur z + prev t' uses the average \ of initialized current z with previous trap result; for 'previous t' \ trap is fed only the previous trap result" endparam param altmode caption = "Alternation Mode" enum = "Skip Main" "Main Always" default = 0 hint = "'Skip Main' means that the primary Mandelbrot series is not iterated \ if any of the others are executed on that particular iteration; 'Main \ Always' means primary Mandelbrot is executed regardless of iteration of \ other series" endparam param power1 caption = "Exponent 1" default = (2,0) hint = "This is the power used for the first (main) Mandelbrot series; \ it is executed every iteration" endparam param power2 caption = "Exponent 2" default = (3,0) hint = "This is the power used for the second Mandelbrot series" endparam param freq2 caption = "Frequency 2" default = 6 hint = "Mandelbrot 2 will be executed every N iterations; enter N. If \ N is zero, then series 2 will not be executed at all" endparam param power3 caption = "Exponent 3" default = (5,0) hint = "This is the power used for the third Mandelbrot series" endparam param freq3 caption = "Frequency 3" default = 0 hint = "Mandelbrot 3 will be executed every N iterations; enter N. If \ N is zero, then series 3 will not be executed at all" endparam param power4 caption = "Exponent 4" default = (6,0) hint = "This is the power used for the fourth Mandelbrot series" endparam param freq4 caption = "Frequency 4" default = 0 hint = "Mandelbrot 4 will be executed every N iterations; enter N. If \ N is zero, then series 4 will not be executed at all" endparam param power5 caption = "Exponent 5" default = (0,1) hint = "This is the power used for the fifth Mandelbrot series" endparam param freq5 caption = "Frequency 5" default = 0 hint = "Mandelbrot 5 will be executed every N iterations; enter N. If \ N is zero, then series 5 will not be executed at all" endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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" endparam param pixelformula caption = "Pixel Formula" enum = "p" "p^2" "p^3" "p^4" "p^power" "1/p" "sqrt(p)" "1/p^2" "log(p)" "e^p" "p^p" \ "sin(p)" "cos(p)" \ "tan(p)" "asin(p)" "acos(p)" "atan(p)" "sinh(p)" "cosh(p)" "tanh(p)" \ "asinh(p)" "acosh(p)" "atanh(p)" "log(1/p)" "log(log(p))" "e^-p" \ "e^(1/p)" "p^-p" "sin(p)^2" "cos(p)^2" "tan(p)^2" "cot(p)" "sec(p)" \ "csc(p)" "cot(p)^2" "sec(p)^2" "csc(p)^2" "p^p^p" "1/p^p^p" "log(-p)" \ "1/log(p)" "plog(p)" "sin(p)/p" "cos(p)/p" "sin(p)*cos(p)" "sin(p^2)" \ "e^(-1/p)" "pe^p" "pe^-p" "pe^(1/p)" "pe^(-1/p)" "p^3" "1/p^3" \ "acot(p)" "asec(p)" "acsc(p)" "tan(p)/p" "cot(p)/p" "sec(p)/p" \ "csc(p)/p" "psin(p)" "pcos(p)" "ptan(p)" "pcot(p)" "psec(p)" "pcsc(p)" \ "sin(1/p)" "cos(1/p)" "tan(1/p)" "cot(1/p)" "sec(1/p)" "csc(1/p)" \ "cotanh(p)" "sech(p)" "cosech(p)" "acoth(p)" "asech(p)" "acosech(p)" \ "3-term polynomial" default = 0 hint = "Pixel value can be initialized \ before iterating. For 'p^power', set parameter 'Pixel Power'; \ for '3-term polynomial', set 'Coeff Pa', 'Exponent Pa', 'Coeff Pb', \ 'Exponent Pb', 'Coeff Pc', 'Exponent Pc'. 'p' results in normal \ initialization" endparam param ppower caption = "Pixel Power" default = (5,0) hint = "This is the power used if parameter \ 'Pixel Formula' is set to 'p^power'" endparam param coeffpa caption = "Coeff Pa" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 1st term" endparam param exponentpa caption = "Exponent Pa" default = (6,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 1st term" endparam param coeffpb caption = "Coeff Pb" default = (-1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 2nd term" endparam param exponentpb caption = "Exponent Pb" default = (4,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 2nd term" endparam param coeffpc caption = "Coeff Pc" default = (1,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the coefficient \ of the 3rd term" endparam param exponentpc caption = "Exponent Pc" default = (2,0) hint = "If 'Pixel Formula' is set to '3-term polynomial', this is the power \ of the 3rd term" 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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)" default = 0 hint = "The point, t, on the AltMan potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" endparam param threshold caption = "Threshold Value" default = 0.5 hint = "Depth of trap well (maximum value that will be trapped) if one of the \ 'Threshold' options are chosen for param 'Trap What'; also, minimum value \ that will be trapped if 'Trap What' is set to a 'Limit' option. Increase \ value for limit traps" endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then Threshold/Limit becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold' \ option or a 'Limit' option, this parameter determines the width of the ring trap" 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)" 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'" endparam param rfpower caption = "FrontEndReal Power" default = 4.0 hint = "Real(z) exponent if param 'FrontEndReal Warp' is set to 'r^power'" 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" endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping ( but after transmutation)" endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping ( but after transmutation)" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" endparam param cpower caption = "Color Power" default = 3.14159 hint = "Color index exponent if param 'Color Warp Factor' is set to 'c^power'" 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" 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" 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" 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" endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds distortion (fBm) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" 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" endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" endparam param varyturb caption = "Vary Turbulence?" 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" endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" endparam param varymode caption = "Feedback Mode" enum = "trapped" "not trapped" "always" default = 0 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" endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the scale size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" endparam param varyrotation caption = "Vary Rotation?" default = FALSE hint = "If set, the value of the trap will modify the AltMan rotation each iteration; \ parameter 'RotationFeedback' can be used to modulate the variation" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" endparam param varycenter caption = "Vary Center?" default = FALSE hint = "If set, the value of the trap will modify the coordinates of the AltMan \ center each iteration; parameter 'CenterFeedback' can be used to modulate the variation" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" 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" endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need huge adjustment (.001-10 may \ be useful)" 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)" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" 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)" 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" 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)" 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" endparam } jam-LissajousTrap { ; jam version 010910 ; The Lissajous here is defined by the parametric equations, ; x = Ax * cos( wx*t + cx ) ; y = Ay * cos( wy*t + cy ), where ; Ax, Ay = amplitudes; wx, wy = frequencies; cx, cy = offsets. init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on Lissajous closest to #z (zinput) ; First, center z on the Lissajous center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on Lissajous (i.e., on origin-#z radial vector) tempx = scale * @xamp * cos( @xfreq*temp + @xoffset) tempy = scale * @yamp * cos( @yfreq*temp + @yoffset) tempc = tempx + flip( tempy ) if @polar if @mutantpolar tempc = abs(tempx) * exp( flip( tempy )) else tempc = (tempx/cos(temp)) * exp( flip( temp )) endif ; @mutantpolar endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Lissajous Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param nscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the Lissajous" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the Lissajous should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of Lissajous center" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param xamp caption = "X Amplitude" default = 1.0 hint = "The x-coordinate of the trap is defined by x = (X Amplitude) * cos( \ (X Frequency) * (atan(#z)) + (X Offset) ); affects curve size" endparam param xfreq caption = "X Frequency" default = 1.0 hint = "The x-coordinate of the trap is defined by x = (X Amplitude) * cos( \ (X Frequency) * (atan(#z)) + (X Offset) ); affects curve shape" endparam param xoffset caption = "X Offset" default = 0.0 hint = "The x-coordinate of the trap is defined by x = (X Amplitude) * cos( \ (X Frequency) * (atan(#z)) + (X Offset) ); affects curve shape" endparam param yamp caption = "Y Amplitude" default = 1.0 hint = "The y-coordinate of the trap is defined by y = (Y Amplitude) * cos( \ (Y Frequency) * (atan(#z)) + (Y Offset) ); affects curve size" endparam param yfreq caption = "Y Frequency" default = 2.0 hint = "The y-coordinate of the trap is defined by y = (Y Amplitude) * cos( \ (Y Frequency) * (atan(#z)) + (Y Offset) ); affects curve shape" endparam param yoffset caption = "Y Offset" default = 1.570796326794896619 hint = "The y-coordinate of the trap is defined by y = (Y Amplitude) * cos( \ (Y Frequency) * (atan(#z)) + (Y Offset) ); affects curve shape" endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the Lissajous potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param mutantpolar caption = "Mutant Polars?" default = FALSE hint = "Optional interpretation; only active if param 'Polar Coordinates' \ is also set" visible = @polar endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-hypocycloidTrap { ; jam version 010910 ; The hypocycloid here is defined by the parametric equations, ; x = (a-b) * cos(t) + b * cos((a/b-1)t) ; y = (a-b) * sin(t) - b * sin((a/b-1)t). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = 0.1 * @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp float hyp1 = @hypa/@hypb - 1, float hyp2 = @hypa - @hypb bool firsthyp = FALSE float pangle = atan2(#pixel) if pangle < 0 pangle = pangle + twopi endif ; pangle 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on hypocycloid closest to #z (zinput) ; First, center z on the hypocycloid center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @hypmode == 2 if !firsthyp firsthyp = TRUE pangle = zangle endif ; firsthyp endif ; @hypmode if @hypmode == 0 temp = zangle else ; (@hypmode == 1) || (@hypmode == 2) temp = pangle endif ; @hypmode if @sprangle temp = temp*@sprangfactor endif ; @sprangle ; Find point on hypocycloid (i.e., on origin-#z radial vector) tempx = scale * ( hyp2*cos(temp) + @hypb*cos(hyp1*temp) ) tempy = scale * ( hyp2*sin(temp) + @hypb*sin(hyp1*temp) ) tempc = tempx + flip( tempy ) if @polar if @mutantpolar tempc = abs(tempx) * exp( flip( tempy )) else tempc = (tempx/cos(temp)) * exp( flip( temp )) endif ; @mutantpolar endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Hypocycloid Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param nscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the hypocycloid" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the hypocycloid should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of hypocycloid center" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param hypa caption = "Hyp A Constant" default = 10.0 hint = "The hypocycloid is defined by the parametric equations x = (a-b) * \ cos(t) + b * cos((a/b-1)t), y = (a-b) * sin(t) - b * sin((a/b-1)t). This \ param is constant 'a'; t = atan(#z)" endparam param hypb caption = "Hyp B Constant" default = 2.0 hint = "The hypocycloid is defined by the parametric equations x = (a-b) * \ cos(t) + b * cos((a/b-1)t), y = (a-b) * sin(t) - b * sin((a/b-1)t). This \ param is constant 'b'; t = atan(#z)" endparam param hypmode caption = "Angle Mode" default = 0 enum = "atan(z)" "atan(pixel)" "atan(first z)" hint = "This setting affects how the angle argument to the hypocycloid \ function is determined" endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the hypocycloid potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param mutantpolar caption = "Mutant Polars?" default = FALSE hint = "Optional interpretation; only active if param 'Polar Coordinates' \ is also set" visible = @polar endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-KappaCurveTrap { ; jam version 011212 ; The kappa curve is defined by r = a * cot(theta). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on kappa curve closest to #z (zinput) ; First, center z on the kappa curve cusp ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on kappa curve (i.e., on origin-#z radial vector) tempx = scale * cotan( temp ) tempc = tempx * exp( flip( temp )) if !@polar tempc = real(ztemp) + flip(tempx) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Kappa Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the kappa curve" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the kappa curve should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of kappa curve center (cusp)" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the kappa curve potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-ConchoidTrap { ; jam version 011212 ; The conchoid is defined by r = a + b*sec(theta) init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on conchoid closest to #z (zinput) ; First, center z on the conchoid cusp ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on conchoid (i.e., on origin-#z radial vector) tempx = @offset + ( scale / cos( temp ) ) tempc = tempx * exp( flip( temp )) if !@polar tempc = real(ztemp) + flip(tempx) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Conchoid Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the conchoid" endparam param offset caption = "Conchoid Offset" default = 0.5 hint = "Affects size of conchoid loop" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the conchoid should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of conchoid center (cusp)" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the conchoid potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-Conchoid-deSluzeTrap { ; jam version 011212 ; The conchoid of de Sluze is defined by r = (k/a)cos(theta) + a/cos(theta) init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on conchoid closest to #z (zinput) ; First, center z on the conchoid cusp ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on conchoid (i.e., on origin-#z radial vector) tempy = cos(temp), tempx = @offset/scale tempx = tempx*tempy + scale/tempy tempc = tempx * exp( flip( temp )) if !@polar tempc = real(ztemp) + flip(tempx) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Conchoid of de Sluze" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale1 Const (a)" default = 0.25 hint = "This parameter affects the size of the conchoid" endparam param offset caption = "Scale2 Const (k)" default = 0.35 hint = "This parameter affects the size of the conchoid" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the conchoid should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of conchoid center (cusp)" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the conchoid potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-SerpentineTrap { ; jam version 010910 ; The serpentine here is defined by the parametric equations, ; x = A * cot( t ) ; y = B * sin( t ) * cos( t ). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on serpentine closest to #z (zinput) ; First, center z on the serpentine center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on serpentine (i.e., on origin-#z radial vector) tempx = scale * @xamp * cotan( temp ) tempy = scale * @yamp * sin( temp ) * cos( temp ) tempc = tempx + flip( tempy ) if @polar if @mutantpolar tempc = abs(tempx) * exp( flip( tempy )) else tempc = (tempx/cos(temp)) * exp( flip( temp )) endif ; @mutantpolar endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Serpentine Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param nscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the serpentine" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the serpentine should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of serpentine center" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param xamp caption = "X Amplitude" default = 1.0 hint = "The x-coordinate of the trap is defined by x = (X Amplitude) * cotan( \ atan(#z) ); affects curve size" endparam param yamp caption = "Y Amplitude" default = 1.0 hint = "The y-coordinate of the trap is defined by y = (Y Amplitude) * cos( \ atan(#z) ) * sin( atan(#z) ); affects curve size" endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the serpentine potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param mutantpolar caption = "Mutant Polars?" default = FALSE hint = "Optional interpretation; only active if param 'Polar Coordinates' \ is also set" visible = @polar endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-hyperbolaTrap { ; jam version 010910 ; The hyperbola here is defined by the parametric equations, ; x = A * sec( t ) ; y = B * tan( t ). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @nscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on hyperbola closest to #z (zinput) ; First, center z on the hyperbola center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on hyperbola (i.e., on origin-#z radial vector) tempx = scale * @xamp / cos( temp ) tempy = scale * @yamp * tan( temp ) tempc = tempx + flip( tempy ) if @polar if @mutantpolar tempc = abs(tempx) * exp( flip( tempy )) else tempc = (tempx/cos(temp)) * exp( flip( temp )) endif ; @mutantpolar endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Hyperbola Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param nscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the hyperbola" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the hyperbola should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of hyperbola center" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param xamp caption = "X Amplitude" default = 1.0 hint = "The x-coordinate of the trap is defined by x = (X Amplitude) * sec( \ atan(#z) ); affects curve size" endparam param yamp caption = "Y Amplitude" default = 1.0 hint = "The y-coordinate of the trap is defined by y = (Y Amplitude) * tan( \ atan(#z) ); affects curve size" endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the hyperbola potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = FALSE hint = "Alternative interpretation of trap value" endparam param mutantpolar caption = "Mutant Polars?" default = FALSE hint = "Optional interpretation; only active if param 'Polar Coordinates' \ is also set" visible = @polar endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-LituusTrap { ; jam version 011225 ; The lituus is defined by r = a/sqrt(theta). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on lituus closest to #z (zinput) ; First, center z on the lituus center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on lituus (i.e., on origin-#z radial vector) tempx = scale / sqrt(temp) tempc = tempx * exp( flip( temp )) if !@polar tempc = real(ztemp) + flip(tempx) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Lituus Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the lituus" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the lituus should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of lituus center (origin)" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the lituus potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-FoliumTrap { ; jam version 011225 ; The folium of Descartes is defined by r = 3a*sin(theta)*cos(theta)/(sin(theta)^3+cos(theta)^3). init: float twopi = 2.0 * #pi ; Change and scale variables to facilitate variation, if selected float spread = @colorspread, float spreadstep = 0.05 * @spreadstp float thresh = @threshold, float threshstep = 0.05 * @threshstp float scale = @tscale, float scalestep = 0.05 * @scalestp float ringstep = 0.05 * @ringstp, float rwidth = @ringwidth float rotation = @rotate * #pi / 180, float rotationstep = 0.05 * @rotationstp if ( rotation < 0 ) rotation = rotation + twopi endif ; rotation complex center = @centr, float centerstep = @centerstp 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 ; For turbulence computation option float turbulamount = @turbamount, float _coloradjust = 0.0, float _color = 0.0 complex zlast = (0,0), complex tlast = (1,0), float turbstep = @turbstp complex zold = (0,0), complex zveryold = (0,0), complex zscratch = (0,0) complex zold2 = (0,0) 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 int iter = 0, int count = 0 int itrapped = int itrapped2 = int itrapped3 = int itrapped4 = 0 float test = 0.0, float trapped1 = float trapped2 = float trapped3 = float trapped4 = 1e9 float zangle = 0.0, float zatrapped = float zatrapped2 = float zatrapped3 = float zatrapped4 = 0.0 float cangle = 0.0, float catrapped = float catrapped2 = float catrapped3 = float catrapped4 = 0.0 complex ztrapped = complex ztrapped2 = complex ztrapped3 = complex ztrapped4 = (0,0) complex ztemp = complex zttrapped = complex zttrapped2 = complex zttrapped3 = complex zttrapped4 = (0,0) complex tempc = complex ctrapped = complex ctrapped2 = complex ctrapped3 = complex ctrapped4 = (0,0) float tempx = 0.0, float tempy = 0.0, float temp = 0.0, float temp2 = 0.0 complex zinput = (0,0) ; If we're trapping something big, initialize small if (( @whattotrap == 1 ) || ( @whattotrap == 5 ) || ( @whattotrap == 6 ) \ || ( @whattotrap == 7 )) trapped1 = trapped2 = trapped3 = trapped4 = -1e9 elseif @whattotrap > 14 trapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap ; Initialize front end real, front end imag, if desired temp2 = @rfscale * real(#z) if ( @realfront == 0 ) tempx = temp2 elseif ( @realfront == 1 ) tempx = 1/temp2 elseif ( @realfront == 2 ) tempx = temp2 * temp2 elseif ( @realfront == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realfront == 4 ) tempx = log(temp2) elseif ( @realfront == 5 ) tempx = exp( temp2) elseif ( @realfront == 6 ) tempx = temp2^temp2 elseif ( @realfront == 7 ) tempx = sin( temp2 ) elseif ( @realfront == 8 ) tempx = cos( temp2 ) elseif ( @realfront == 9 ) tempx = tan( temp2 ) elseif ( @realfront == 10 ) tempx = asin( temp2 ) elseif ( @realfront == 11 ) tempx = acos( temp2 ) elseif ( @realfront == 12 ) tempx = atan( temp2 ) elseif ( @realfront == 13 ) tempx = sinh( temp2 ) elseif ( @realfront == 14 ) tempx = cosh( temp2 ) elseif ( @realfront == 15 ) tempx = tanh( temp2 ) elseif ( @realfront == 16 ) tempx = asinh( temp2 ) elseif ( @realfront == 17 ) tempx = acosh( temp2 ) elseif ( @realfront == 18 ) tempx = atanh( temp2 ) elseif ( @realfront == 19 ) tempx = log( 1/temp2 ) elseif ( @realfront == 20 ) tempx = log( log( temp2 )) elseif ( @realfront == 21 ) tempx = exp( -temp2 ) elseif ( @realfront == 22 ) tempx = exp( 1/temp2 ) elseif ( @realfront == 23 ) tempx = temp2^(-temp2) elseif ( @realfront == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 27 ) tempx = cotan( temp2 ) elseif ( @realfront == 28 ) tempx = 1/cos( temp2 ) elseif ( @realfront == 29 ) tempx = 1/sin( temp2 ) elseif ( @realfront == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realfront == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realfront == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realfront == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realfront == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realfront == 35 ) tempx = log(-temp2) elseif ( @realfront == 36 ) tempx = 1/log( temp2 ) elseif ( @realfront == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realfront == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realfront == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realfront == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realfront == 41 ) tempx = sin( temp2^2 ) elseif ( @realfront == 42 ) tempx = exp( -1/temp2 ) elseif ( @realfront == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realfront == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realfront == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realfront == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realfront == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realfront == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realfront == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realfront == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realfront == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realfront == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realfront == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realfront == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realfront == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realfront == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realfront == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realfront == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realfront == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realfront == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realfront == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realfront == 62 ) tempx = sin( 1/temp2 ) elseif ( @realfront == 63 ) tempx = cos( 1/temp2 ) elseif ( @realfront == 64 ) tempx = tan( 1/temp2 ) elseif ( @realfront == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realfront == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realfront == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realfront == 68 ) tempx = cotanh( temp2 ) elseif ( @realfront == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realfront == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realfront == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realfront == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realfront == 73 ) tempx = asinh( 1/temp2 ) elseif @realfront == 74 tempx = temp2^@rfpower elseif @realfront == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realfront == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realfront == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realfront == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realfront == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realfront == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realfront == 81 tempx = sinh(1/temp2) elseif @realfront == 82 tempx = cosh(1/temp2) elseif @realfront == 83 tempx = tanh(1/temp2) elseif @realfront == 84 tempx = cotanh(1/temp2) elseif @realfront == 85 tempx = 1/cosh(1/temp2) elseif @realfront == 86 tempx = 1/sinh(1/temp2) elseif @realfront == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realfront == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realfront == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realfront == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realfront == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realfront == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realfront == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realfront == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realfront == 98 tempx = exp(2*temp2) elseif @realfront == 99 tempx = exp(-2*temp2) elseif @realfront == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realfront == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realfront == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realfront == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realfront == 104 tempx = sin(temp2) * sinh(temp2) elseif @realfront == 105 tempx = sin(temp2) * cosh(temp2) elseif @realfront == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realfront == 107 tempx = sin(temp2)*exp(temp2) elseif @realfront == 108 tempx = cos(temp2)*exp(temp2) elseif @realfront == 109 tempx = sinh(temp2)*exp(temp2) elseif @realfront == 110 tempx = cosh(temp2)*exp(temp2) elseif @realfront == 111 tempx = sin(temp2)*log(temp2) elseif @realfront == 112 tempx = cos(temp2)*log(temp2) elseif @realfront == 113 tempx = sinh(temp2)*log(temp2) else ; @realfront == 114 tempx = cosh(temp2)*log(temp2) endif ; realfront if @rfperturb tempx = @rfblend * tempx + rfbcomp * real(#z) endif ; @rfperturb temp2 = @ifscale * imag(#z) if ( @imagfront == 0 ) tempy = temp2 elseif ( @imagfront == 1 ) tempy = 1/temp2 elseif ( @imagfront == 2 ) tempy = temp2 * temp2 elseif ( @imagfront == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagfront == 4 ) tempy = log(temp2) elseif ( @imagfront == 5 ) tempy = exp( temp2) elseif ( @imagfront == 6 ) tempy = temp2^temp2 elseif ( @imagfront == 7 ) tempy = sin( temp2 ) elseif ( @imagfront == 8 ) tempy = cos( temp2 ) elseif ( @imagfront == 9 ) tempy = tan( temp2 ) elseif ( @imagfront == 10 ) tempy = asin( temp2 ) elseif ( @imagfront == 11 ) tempy = acos( temp2 ) elseif ( @imagfront == 12 ) tempy = atan( temp2 ) elseif ( @imagfront == 13 ) tempy = sinh( temp2 ) elseif ( @imagfront == 14 ) tempy = cosh( temp2 ) elseif ( @imagfront == 15 ) tempy = tanh( temp2 ) elseif ( @imagfront == 16 ) tempy = asinh( temp2 ) elseif ( @imagfront == 17 ) tempy = acosh( temp2 ) elseif ( @imagfront == 18 ) tempy = atanh( temp2 ) elseif ( @imagfront == 19 ) tempy = log( 1/temp2 ) elseif ( @imagfront == 20 ) tempy = log( log( temp2 )) elseif ( @imagfront == 21 ) tempy = exp( -temp2 ) elseif ( @imagfront == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagfront == 23 ) tempy = temp2^(-temp2) elseif ( @imagfront == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 27 ) tempy = cotan( temp2 ) elseif ( @imagfront == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagfront == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagfront == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagfront == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagfront == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagfront == 35 ) tempy = log(-temp2) elseif ( @imagfront == 36 ) tempy = 1/log( temp2 ) elseif ( @imagfront == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagfront == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagfront == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagfront == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagfront == 41 ) tempy = sin( temp2^2 ) elseif ( @imagfront == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagfront == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagfront == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagfront == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagfront == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagfront == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagfront == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagfront == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagfront == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagfront == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagfront == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagfront == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagfront == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagfront == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagfront == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagfront == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagfront == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagfront == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagfront == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagfront == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagfront == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagfront == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagfront == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagfront == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagfront == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagfront == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagfront == 68 ) tempy = cotanh( temp2 ) elseif ( @imagfront == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagfront == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagfront == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagfront == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagfront == 73 ) tempy = asinh( 1/temp2 ) elseif @imagfront == 74 tempy = temp2^@ifpower elseif @imagfront == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagfront == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagfront == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagfront == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagfront == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagfront == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagfront == 81 tempy = sinh(1/temp2) elseif @imagfront == 82 tempy = cosh(1/temp2) elseif @imagfront == 83 tempy = tanh(1/temp2) elseif @imagfront == 84 tempy = cotanh(1/temp2) elseif @imagfront == 85 tempy = 1/cosh(1/temp2) elseif @imagfront == 86 tempy = 1/sinh(1/temp2) elseif @imagfront == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagfront == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagfront == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagfront == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagfront == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagfront == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagfront == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagfront == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagfront == 98 tempy = exp(2*temp2) elseif @imagfront == 99 tempy = exp(-2*temp2) elseif @imagfront == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagfront == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagfront == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagfront == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagfront == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagfront == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagfront == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagfront == 107 tempy = sin(temp2)*exp(temp2) elseif @imagfront == 108 tempy = cos(temp2)*exp(temp2) elseif @imagfront == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagfront == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagfront == 111 tempy = sin(temp2)*log(temp2) elseif @imagfront == 112 tempy = cos(temp2)*log(temp2) elseif @imagfront == 113 tempy = sinh(temp2)*log(temp2) else ; @imagfront == 114 tempy = cosh(temp2)*log(temp2) endif ; imagfront if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(#z) endif ; @ifperturb zold = tempx + flip(tempy) ; Initialize z, if desired zold = @ziscale * zold if ( @initialization == 0 ) zinput = zold elseif ( @initialization == 1 ) zinput = 1/zold elseif ( @initialization == 2 ) zinput = zold * zold elseif ( @initialization == 3 ) zinput = 1 / ( zold * zold ) elseif ( @initialization == 4 ) zinput = log(zold) elseif ( @initialization == 5 ) zinput = exp( zold) elseif ( @initialization == 6 ) zinput = zold^zold elseif ( @initialization == 7 ) zinput = sin( zold ) elseif ( @initialization == 8 ) zinput = cos( zold ) elseif ( @initialization == 9 ) zinput = tan( zold ) elseif ( @initialization == 10 ) zinput = asin( zold ) elseif ( @initialization == 11 ) zinput = acos( zold ) elseif ( @initialization == 12 ) zinput = atan( zold ) elseif ( @initialization == 13 ) zinput = sinh( zold ) elseif ( @initialization == 14 ) zinput = cosh( zold ) elseif ( @initialization == 15 ) zinput = tanh( zold ) elseif ( @initialization == 16 ) zinput = asinh( zold ) elseif ( @initialization == 17 ) zinput = acosh( zold ) elseif ( @initialization == 18 ) zinput = atanh( zold ) elseif ( @initialization == 19 ) zinput = log( 1/zold ) elseif ( @initialization == 20 ) zinput = log( log( zold )) elseif ( @initialization == 21 ) zinput = exp( -zold ) elseif ( @initialization == 22 ) zinput = exp( 1/zold ) elseif ( @initialization == 23 ) zinput = zold^(-zold) elseif ( @initialization == 24 ) zinput = sin( zold ) zinput = zinput * zinput elseif ( @initialization == 25 ) zinput = cos( zold ) zinput = zinput * zinput elseif ( @initialization == 26 ) zinput = tan( zold ) zinput = zinput * zinput elseif ( @initialization == 27 ) zinput = cotan( zold ) elseif ( @initialization == 28 ) zinput = 1/cos( zold ) elseif ( @initialization == 29 ) zinput = 1/sin( zold ) elseif ( @initialization == 30 ) zinput = cotan( zold ) zinput = zinput * zinput elseif ( @initialization == 31 ) zinput = 1/cos( zold ) zinput = zinput * zinput elseif ( @initialization == 32 ) zinput = 1/sin( zold ) zinput = zinput * zinput elseif ( @initialization == 33 ) zinput = zold^(zold) zinput = zold^zinput elseif ( @initialization == 34 ) zinput = zold^(zold) zinput = 1/( zold^zinput ) elseif ( @initialization == 35 ) zinput = log(-zold) elseif ( @initialization == 36 ) zinput = 1/log( zold ) elseif ( @initialization == 37 ) zinput = zold * log( zold ) elseif ( @initialization == 38 ) zinput = sin( zold ) / zold elseif ( @initialization == 39 ) zinput = cos( zold ) / zold elseif ( @initialization == 40 ) zinput = sin( zold ) * cos( zold ) elseif ( @initialization == 41 ) zinput = sin( zold^2 ) elseif ( @initialization == 42 ) zinput = exp( -1/zold ) elseif ( @initialization == 43 ) zinput = zold * exp( zold ) elseif ( @initialization == 44 ) zinput = zold * exp( -zold ) elseif ( @initialization == 45 ) zinput = zold * exp( 1/zold ) elseif ( @initialization == 46 ) zinput = zold * exp( -1/zold ) elseif ( @initialization == 47 ) zinput = zold * zold * zold elseif ( @initialization == 48 ) zinput = 1 / ( zold * zold * zold ) elseif ( @initialization == 49 ) zinput = atan( 1 / zold ) elseif ( @initialization == 50 ) zinput = acos( 1 / zold ) elseif ( @initialization == 51 ) zinput = asin( 1 / zold ) elseif ( @initialization == 52 ) zinput = tan( zold ) / zold elseif ( @initialization == 53 ) zinput = cotan( zold ) / zold elseif ( @initialization == 54 ) zinput = 1 / ( zold * cos( zold )) elseif ( @initialization == 55 ) zinput = 1 / ( zold * sin( zold )) elseif ( @initialization == 56 ) zinput = zold * sin( zold ) elseif ( @initialization == 57 ) zinput = zold * cos( zold ) elseif ( @initialization == 58 ) zinput = zold * tan( zold ) elseif ( @initialization == 59 ) zinput = zold * cotan( zold ) elseif ( @initialization == 60 ) zinput = zold/cos( zold ) elseif ( @initialization == 61 ) zinput = zold/sin( zold ) elseif ( @initialization == 62 ) zinput = sin( 1/zold ) elseif ( @initialization == 63 ) zinput = cos( 1/zold ) elseif ( @initialization == 64 ) zinput = tan( 1/zold ) elseif ( @initialization == 65 ) zinput = cotan( 1/zold ) elseif ( @initialization == 66 ) zinput = 1/cos( 1/zold ) elseif ( @initialization == 67 ) zinput = 1/sin( 1/zold ) elseif ( @initialization == 68 ) zinput = cotanh( zold ) elseif ( @initialization == 69 ) zinput = 1/cosh( zold ) elseif ( @initialization == 70 ) zinput = 1/sinh( zold ) elseif ( @initialization == 71 ) zinput = atanh( 1/zold ) elseif ( @initialization == 72 ) zinput = acosh( 1/zold ) elseif ( @initialization == 73 ) zinput = asinh( 1/zold ) elseif @initialization == 74 zinput = zold^@zpower elseif @initialization == 75 zinput = sinh(zold) zinput = zinput * zinput elseif @initialization == 76 zinput = cosh( zold ) zinput = zinput * zinput elseif @initialization == 77 zinput = tanh(zold) zinput = zinput * zinput elseif @initialization == 78 zinput = cotanh( zold ) zinput = zinput * zinput elseif @initialization == 79 zinput = 1/cosh(zold) zinput = zinput * zinput elseif @initialization == 80 zinput = 1 / sinh( zold ) zinput = zinput * zinput elseif @initialization == 81 zinput = sinh(1/zold) elseif @initialization == 82 zinput = cosh(1/zold) elseif @initialization == 83 zinput = tanh(1/zold) elseif @initialization == 84 zinput = cotanh(1/zold) elseif @initialization == 85 zinput = 1/cosh(1/zold) elseif @initialization == 86 zinput = 1/sinh(1/zold) elseif @initialization == 87 zinput = sin( zold ) * tan(zold) elseif @initialization == 88 zinput = sinh(zold) * tanh(zold) elseif @initialization == 89 zinput = sinh(zold) * cosh(zold) elseif @initialization == 90 zinput = sinh(zold), zscratch = cosh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 91 zinput = sin(zold), zscratch = cos(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 92 zinput = 1/zold zinput = sin(zinput)*cos(zinput) elseif @initialization == 93 zinput = sin( 1/zold ) zinput = zinput*zinput elseif @initialization == 94 zinput = sin(zold) * cos(1/zold) elseif @initialization == 95 zinput = sin(zold) * sin(1/zold) elseif @initialization == 96 zinput = log(zold) zinput = zinput*zinput elseif @initialization == 97 zinput = sin(zold) * sin(2*zold) elseif @initialization == 98 zinput = exp(2*zold) elseif @initialization == 99 zinput = exp(-2*zold) elseif @initialization == 100 zinput = 1/zold zinput = sinh(zinput)*cosh(zinput) elseif @initialization == 101 zinput = sinh( 1/zold ) zinput = zinput*zinput elseif @initialization == 102 zinput = sinh(zold) * cosh(1/zold) elseif @initialization == 103 zinput = sinh(zold) * sinh(1/zold) elseif @initialization == 104 zinput = sin(zold) * sinh(zold) elseif @initialization == 105 zinput = sin(zold) * cosh(zold) elseif @initialization == 106 zinput = sin(zold), zscratch = sinh(zold) zinput = zinput*zinput*zscratch*zscratch elseif @initialization == 107 zinput = sin(zold)*exp(zold) elseif @initialization == 108 zinput = cos(zold)*exp(zold) elseif @initialization == 109 zinput = sinh(zold)*exp(zold) elseif @initialization == 110 zinput = cosh(zold)*exp(zold) elseif @initialization == 111 zinput = sin(zold)*log(zold) elseif @initialization == 112 zinput = cos(zold)*log(zold) elseif @initialization == 113 zinput = sinh(zold)*log(zold) else ; @initialization == 114 zinput = cosh(zold)*log(zold) endif ; initialization if @initperturb zinput = @initblend * zinput + initbcomp * zold 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 ; Find coordinates and angle of point on folium closest to #z (zinput) ; First, center z on the folium center ztemp = zinput - center ; Compute rotated #z ztemp = ztemp * exp( flip( -rotation)) if @history if @histype == 0 zold2 = ztemp - zold2, ztemp = zold2 elseif @histype == 1 zscratch = ztemp, ztemp = ztemp - zold2, zold2 = zscratch elseif @histype == 2 zscratch = ztemp, ztemp = ztemp - zveryold, zveryold = zold2, zold2 = zscratch endif ; histype endif ; history ; Save value for later turbulence zlast = ztemp ; Now find angle of 'rotated' #z zangle = atan2( ztemp ) if ( zangle < 0 ) zangle = zangle + twopi ; 0 <= zangle <= two pi endif ; zangle if @sprangle temp = zangle*@sprangfactor else temp = zangle endif ; @sprangle ; Find point on folium (i.e., on origin-#z radial vector) tempx = sin(temp), tempy = cos(temp) tempx = scale * tempx * tempy / ( tempx*tempx*tempx + tempy*tempy*tempy ) tempc = tempx * exp( flip( temp )) if !@polar tempc = real(ztemp) + flip(tempx) endif ; @polar zold = 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 zscratch = cosh(tempc) tempc = sinh(tempc) tempc = tempc*tempc*zscratch*zscratch elseif @transmogrify == 91 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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 zscratch = cosh(tempc) tempc = sin(tempc) tempc = tempc*tempc*zscratch*zscratch 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) else ; @transmogrify == 114 tempc = cosh(tempc)*log(tempc) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * zold endif ; @trapperturb ; Initialize back end real, back end imag, if desired temp2 = @rbscale * real(tempc) if ( @realback == 0 ) tempx = temp2 elseif ( @realback == 1 ) tempx = 1/temp2 elseif ( @realback == 2 ) tempx = temp2 * temp2 elseif ( @realback == 3 ) tempx = 1 / ( temp2 * temp2 ) elseif ( @realback == 4 ) tempx = log(temp2) elseif ( @realback == 5 ) tempx = exp( temp2) elseif ( @realback == 6 ) tempx = temp2^temp2 elseif ( @realback == 7 ) tempx = sin( temp2 ) elseif ( @realback == 8 ) tempx = cos( temp2 ) elseif ( @realback == 9 ) tempx = tan( temp2 ) elseif ( @realback == 10 ) tempx = asin( temp2 ) elseif ( @realback == 11 ) tempx = acos( temp2 ) elseif ( @realback == 12 ) tempx = atan( temp2 ) elseif ( @realback == 13 ) tempx = sinh( temp2 ) elseif ( @realback == 14 ) tempx = cosh( temp2 ) elseif ( @realback == 15 ) tempx = tanh( temp2 ) elseif ( @realback == 16 ) tempx = asinh( temp2 ) elseif ( @realback == 17 ) tempx = acosh( temp2 ) elseif ( @realback == 18 ) tempx = atanh( temp2 ) elseif ( @realback == 19 ) tempx = log( 1/temp2 ) elseif ( @realback == 20 ) tempx = log( log( temp2 )) elseif ( @realback == 21 ) tempx = exp( -temp2 ) elseif ( @realback == 22 ) tempx = exp( 1/temp2 ) elseif ( @realback == 23 ) tempx = temp2^(-temp2) elseif ( @realback == 24 ) tempx = sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 25 ) tempx = cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 26 ) tempx = tan( temp2 ) tempx = tempx * tempx elseif ( @realback == 27 ) tempx = cotan( temp2 ) elseif ( @realback == 28 ) tempx = 1/cos( temp2 ) elseif ( @realback == 29 ) tempx = 1/sin( temp2 ) elseif ( @realback == 30 ) tempx = cotan( temp2 ) tempx = tempx * tempx elseif ( @realback == 31 ) tempx = 1/cos( temp2 ) tempx = tempx * tempx elseif ( @realback == 32 ) tempx = 1/sin( temp2 ) tempx = tempx * tempx elseif ( @realback == 33 ) tempx = temp2^(temp2) tempx = temp2^tempx elseif ( @realback == 34 ) tempx = temp2^(temp2) tempx = 1/( temp2^tempx ) elseif ( @realback == 35 ) tempx = log(-temp2) elseif ( @realback == 36 ) tempx = 1/log( temp2 ) elseif ( @realback == 37 ) tempx = temp2 * log( temp2 ) elseif ( @realback == 38 ) tempx = sin( temp2 ) / temp2 elseif ( @realback == 39 ) tempx = cos( temp2 ) / temp2 elseif ( @realback == 40 ) tempx = sin( temp2 ) * cos( temp2 ) elseif ( @realback == 41 ) tempx = sin( temp2^2 ) elseif ( @realback == 42 ) tempx = exp( -1/temp2 ) elseif ( @realback == 43 ) tempx = temp2 * exp( temp2 ) elseif ( @realback == 44 ) tempx = temp2 * exp( -temp2 ) elseif ( @realback == 45 ) tempx = temp2 * exp( 1/temp2 ) elseif ( @realback == 46 ) tempx = temp2 * exp( -1/temp2 ) elseif ( @realback == 47 ) tempx = temp2 * temp2 * temp2 elseif ( @realback == 48 ) tempx = 1 / ( temp2 * temp2 * temp2 ) elseif ( @realback == 49 ) tempx = atan( 1 / temp2 ) elseif ( @realback == 50 ) tempx = acos( 1 / temp2 ) elseif ( @realback == 51 ) tempx = asin( 1 / temp2 ) elseif ( @realback == 52 ) tempx = tan( temp2 ) / temp2 elseif ( @realback == 53 ) tempx = cotan( temp2 ) / temp2 elseif ( @realback == 54 ) tempx = 1 / ( temp2 * cos( temp2 )) elseif ( @realback == 55 ) tempx = 1 / ( temp2 * sin( temp2 )) elseif ( @realback == 56 ) tempx = temp2 * sin( temp2 ) elseif ( @realback == 57 ) tempx = temp2 * cos( temp2 ) elseif ( @realback == 58 ) tempx = temp2 * tan( temp2 ) elseif ( @realback == 59 ) tempx = temp2 * cotan( temp2 ) elseif ( @realback == 60 ) tempx = temp2/cos( temp2 ) elseif ( @realback == 61 ) tempx = temp2/sin( temp2 ) elseif ( @realback == 62 ) tempx = sin( 1/temp2 ) elseif ( @realback == 63 ) tempx = cos( 1/temp2 ) elseif ( @realback == 64 ) tempx = tan( 1/temp2 ) elseif ( @realback == 65 ) tempx = cotan( 1/temp2 ) elseif ( @realback == 66 ) tempx = 1/cos( 1/temp2 ) elseif ( @realback == 67 ) tempx = 1/sin( 1/temp2 ) elseif ( @realback == 68 ) tempx = cotanh( temp2 ) elseif ( @realback == 69 ) tempx = 1/cosh( temp2 ) elseif ( @realback == 70 ) tempx = 1/sinh( temp2 ) elseif ( @realback == 71 ) tempx = atanh( 1/temp2 ) elseif ( @realback == 72 ) tempx = acosh( 1/temp2 ) elseif ( @realback == 73 ) tempx = asinh( 1/temp2 ) elseif @realback == 74 tempx = temp2^@rbpower elseif @realback == 75 tempx = sinh(temp2) tempx = tempx * tempx elseif @realback == 76 tempx = cosh( temp2 ) tempx = tempx * tempx elseif @realback == 77 tempx = tanh(temp2) tempx = tempx * tempx elseif @realback == 78 tempx = cotanh( temp2 ) tempx = tempx * tempx elseif @realback == 79 tempx = 1/cosh(temp2) tempx = tempx * tempx elseif @realback == 80 tempx = 1 / sinh( temp2 ) tempx = tempx * tempx elseif @realback == 81 tempx = sinh(1/temp2) elseif @realback == 82 tempx = cosh(1/temp2) elseif @realback == 83 tempx = tanh(1/temp2) elseif @realback == 84 tempx = cotanh(1/temp2) elseif @realback == 85 tempx = 1/cosh(1/temp2) elseif @realback == 86 tempx = 1/sinh(1/temp2) elseif @realback == 87 tempx = sin( temp2 ) * tan(temp2) elseif @realback == 88 tempx = sinh(temp2) * tanh(temp2) elseif @realback == 89 tempx = sinh(temp2) * cosh(temp2) elseif @realback == 90 tempx = sinh(temp2), temp = cosh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 91 tempx = sin(temp2), temp = cos(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 92 tempx = 1/temp2 tempx = sin(tempx)*cos(tempx) elseif @realback == 93 tempx = sin( 1/temp2 ) tempx = tempx*tempx elseif @realback == 94 tempx = sin(temp2) * cos(1/temp2) elseif @realback == 95 tempx = sin(temp2) * sin(1/temp2) elseif @realback == 96 tempx = log(temp2) tempx = tempx*tempx elseif @realback == 97 tempx = sin(temp2) * sin(2*temp2) elseif @realback == 98 tempx = exp(2*temp2) elseif @realback == 99 tempx = exp(-2*temp2) elseif @realback == 100 tempx = 1/temp2 tempx = sinh(tempx)*cosh(tempx) elseif @realback == 101 tempx = sinh( 1/temp2 ) tempx = tempx*tempx elseif @realback == 102 tempx = sinh(temp2) * cosh(1/temp2) elseif @realback == 103 tempx = sinh(temp2) * sinh(1/temp2) elseif @realback == 104 tempx = sin(temp2) * sinh(temp2) elseif @realback == 105 tempx = sin(temp2) * cosh(temp2) elseif @realback == 106 tempx = sin(temp2), temp = sinh(temp2) tempx = tempx*tempx*temp*temp elseif @realback == 107 tempx = sin(temp2)*exp(temp2) elseif @realback == 108 tempx = cos(temp2)*exp(temp2) elseif @realback == 109 tempx = sinh(temp2)*exp(temp2) elseif @realback == 110 tempx = cosh(temp2)*exp(temp2) elseif @realback == 111 tempx = sin(temp2)*log(temp2) elseif @realback == 112 tempx = cos(temp2)*log(temp2) elseif @realback == 113 tempx = sinh(temp2)*log(temp2) else ; @realback == 114 tempx = cosh(temp2)*log(temp2) endif ; realback if @rbperturb tempx = @rbblend * tempx + rbbcomp * real(tempc) endif ; @rbperturb temp2 = @ibscale * imag(tempc) if ( @imagback == 0 ) tempy = temp2 elseif ( @imagback == 1 ) tempy = 1/temp2 elseif ( @imagback == 2 ) tempy = temp2 * temp2 elseif ( @imagback == 3 ) tempy = 1 / ( temp2 * temp2 ) elseif ( @imagback == 4 ) tempy = log(temp2) elseif ( @imagback == 5 ) tempy = exp( temp2) elseif ( @imagback == 6 ) tempy = temp2^temp2 elseif ( @imagback == 7 ) tempy = sin( temp2 ) elseif ( @imagback == 8 ) tempy = cos( temp2 ) elseif ( @imagback == 9 ) tempy = tan( temp2 ) elseif ( @imagback == 10 ) tempy = asin( temp2 ) elseif ( @imagback == 11 ) tempy = acos( temp2 ) elseif ( @imagback == 12 ) tempy = atan( temp2 ) elseif ( @imagback == 13 ) tempy = sinh( temp2 ) elseif ( @imagback == 14 ) tempy = cosh( temp2 ) elseif ( @imagback == 15 ) tempy = tanh( temp2 ) elseif ( @imagback == 16 ) tempy = asinh( temp2 ) elseif ( @imagback == 17 ) tempy = acosh( temp2 ) elseif ( @imagback == 18 ) tempy = atanh( temp2 ) elseif ( @imagback == 19 ) tempy = log( 1/temp2 ) elseif ( @imagback == 20 ) tempy = log( log( temp2 )) elseif ( @imagback == 21 ) tempy = exp( -temp2 ) elseif ( @imagback == 22 ) tempy = exp( 1/temp2 ) elseif ( @imagback == 23 ) tempy = temp2^(-temp2) elseif ( @imagback == 24 ) tempy = sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 25 ) tempy = cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 26 ) tempy = tan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 27 ) tempy = cotan( temp2 ) elseif ( @imagback == 28 ) tempy = 1/cos( temp2 ) elseif ( @imagback == 29 ) tempy = 1/sin( temp2 ) elseif ( @imagback == 30 ) tempy = cotan( temp2 ) tempy = tempy * tempy elseif ( @imagback == 31 ) tempy = 1/cos( temp2 ) tempy = tempy * tempy elseif ( @imagback == 32 ) tempy = 1/sin( temp2 ) tempy = tempy * tempy elseif ( @imagback == 33 ) tempy = temp2^(temp2) tempy = temp2^tempy elseif ( @imagback == 34 ) tempy = temp2^(temp2) tempy = 1/( temp2^tempy ) elseif ( @imagback == 35 ) tempy = log(-temp2) elseif ( @imagback == 36 ) tempy = 1/log( temp2 ) elseif ( @imagback == 37 ) tempy = temp2 * log( temp2 ) elseif ( @imagback == 38 ) tempy = sin( temp2 ) / temp2 elseif ( @imagback == 39 ) tempy = cos( temp2 ) / temp2 elseif ( @imagback == 40 ) tempy = sin( temp2 ) * cos( temp2 ) elseif ( @imagback == 41 ) tempy = sin( temp2^2 ) elseif ( @imagback == 42 ) tempy = exp( -1/temp2 ) elseif ( @imagback == 43 ) tempy = temp2 * exp( temp2 ) elseif ( @imagback == 44 ) tempy = temp2 * exp( -temp2 ) elseif ( @imagback == 45 ) tempy = temp2 * exp( 1/temp2 ) elseif ( @imagback == 46 ) tempy = temp2 * exp( -1/temp2 ) elseif ( @imagback == 47 ) tempy = temp2 * temp2 * temp2 elseif ( @imagback == 48 ) tempy = 1 / ( temp2 * temp2 * temp2 ) elseif ( @imagback == 49 ) tempy = atan( 1 / temp2 ) elseif ( @imagback == 50 ) tempy = acos( 1 / temp2 ) elseif ( @imagback == 51 ) tempy = asin( 1 / temp2 ) elseif ( @imagback == 52 ) tempy = tan( temp2 ) / temp2 elseif ( @imagback == 53 ) tempy = cotan( temp2 ) / temp2 elseif ( @imagback == 54 ) tempy = 1 / ( temp2 * cos( temp2 )) elseif ( @imagback == 55 ) tempy = 1 / ( temp2 * sin( temp2 )) elseif ( @imagback == 56 ) tempy = temp2 * sin( temp2 ) elseif ( @imagback == 57 ) tempy = temp2 * cos( temp2 ) elseif ( @imagback == 58 ) tempy = temp2 * tan( temp2 ) elseif ( @imagback == 59 ) tempy = temp2 * cotan( temp2 ) elseif ( @imagback == 60 ) tempy = temp2/cos( temp2 ) elseif ( @imagback == 61 ) tempy = temp2/sin( temp2 ) elseif ( @imagback == 62 ) tempy = sin( 1/temp2 ) elseif ( @imagback == 63 ) tempy = cos( 1/temp2 ) elseif ( @imagback == 64 ) tempy = tan( 1/temp2 ) elseif ( @imagback == 65 ) tempy = cotan( 1/temp2 ) elseif ( @imagback == 66 ) tempy = 1/cos( 1/temp2 ) elseif ( @imagback == 67 ) tempy = 1/sin( 1/temp2 ) elseif ( @imagback == 68 ) tempy = cotanh( temp2 ) elseif ( @imagback == 69 ) tempy = 1/cosh( temp2 ) elseif ( @imagback == 70 ) tempy = 1/sinh( temp2 ) elseif ( @imagback == 71 ) tempy = atanh( 1/temp2 ) elseif ( @imagback == 72 ) tempy = acosh( 1/temp2 ) elseif ( @imagback == 73 ) tempy = asinh( 1/temp2 ) elseif @imagback == 74 tempy = temp2^@ibpower elseif @imagback == 75 tempy = sinh(temp2) tempy = tempy * tempy elseif @imagback == 76 tempy = cosh( temp2 ) tempy = tempy * tempy elseif @imagback == 77 tempy = tanh(temp2) tempy = tempy * tempy elseif @imagback == 78 tempy = cotanh( temp2 ) tempy = tempy * tempy elseif @imagback == 79 tempy = 1/cosh(temp2) tempy = tempy * tempy elseif @imagback == 80 tempy = 1 / sinh( temp2 ) tempy = tempy * tempy elseif @imagback == 81 tempy = sinh(1/temp2) elseif @imagback == 82 tempy = cosh(1/temp2) elseif @imagback == 83 tempy = tanh(1/temp2) elseif @imagback == 84 tempy = cotanh(1/temp2) elseif @imagback == 85 tempy = 1/cosh(1/temp2) elseif @imagback == 86 tempy = 1/sinh(1/temp2) elseif @imagback == 87 tempy = sin( temp2 ) * tan(temp2) elseif @imagback == 88 tempy = sinh(temp2) * tanh(temp2) elseif @imagback == 89 tempy = sinh(temp2) * cosh(temp2) elseif @imagback == 90 tempy = sinh(temp2), temp = cosh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 91 tempy = sin(temp2), temp = cos(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 92 tempy = 1/temp2 tempy = sin(tempy)*cos(tempy) elseif @imagback == 93 tempy = sin( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 94 tempy = sin(temp2) * cos(1/temp2) elseif @imagback == 95 tempy = sin(temp2) * sin(1/temp2) elseif @imagback == 96 tempy = log(temp2) tempy = tempy*tempy elseif @imagback == 97 tempy = sin(temp2) * sin(2*temp2) elseif @imagback == 98 tempy = exp(2*temp2) elseif @imagback == 99 tempy = exp(-2*temp2) elseif @imagback == 100 tempy = 1/temp2 tempy = sinh(tempy)*cosh(tempy) elseif @imagback == 101 tempy = sinh( 1/temp2 ) tempy = tempy*tempy elseif @imagback == 102 tempy = sinh(temp2) * cosh(1/temp2) elseif @imagback == 103 tempy = sinh(temp2) * sinh(1/temp2) elseif @imagback == 104 tempy = sin(temp2) * sinh(temp2) elseif @imagback == 105 tempy = sin(temp2) * cosh(temp2) elseif @imagback == 106 tempy = sin(temp2), temp = sinh(temp2) tempy = tempy*tempy*temp*temp elseif @imagback == 107 tempy = sin(temp2)*exp(temp2) elseif @imagback == 108 tempy = cos(temp2)*exp(temp2) elseif @imagback == 109 tempy = sinh(temp2)*exp(temp2) elseif @imagback == 110 tempy = cosh(temp2)*exp(temp2) elseif @imagback == 111 tempy = sin(temp2)*log(temp2) elseif @imagback == 112 tempy = cos(temp2)*log(temp2) elseif @imagback == 113 tempy = sinh(temp2)*log(temp2) else ; @imagback == 114 tempy = cosh(temp2)*log(temp2) endif ; imagback if @ibperturb tempy = @ibblend * tempy + ibbcomp * imag(tempc) endif ; @ibperturb tempc = tempx + flip(tempy) cangle = atan2( tempc ) if ( cangle < 0 ) cangle = cangle + twopi endif ; cangle if @twavy if @twavmode == 0 ; radial mode temp = cabs( tempc ) temp = temp + @twavamp * temp * sin( @twavfreq * cangle ) ; vary radius tempc = temp * exp( flip( cangle )) ; compute new tempc else ; tangential mode tempx = cabs( tempc ) temp = cangle + @twavamp * cangle * sin( @twavfreq * tempx ) ; vary azimuth tempc = tempx * exp( flip( temp )) ; compute new tempc cangle = temp endif ; @twavmode endif ; @twavy if @pointmode ; compare subsequent values to first trap point on trap graph if itrapped != 0 ; some point must have already been trapped tempc = ctrapped endif; itrapped endif ; @pointmode ; Save value for later turbulence tlast = tempc if @swapflavor zscratch = ztemp else zscratch = #z endif ; swapflavor if ( @trapmode == 0 ) ; distance test = cabs( ztemp - tempc ) elseif ( @trapmode == 1 ) ; angle test = zangle elseif ( @trapmode == 2 ) ; trap angle test = cangle elseif ( @trapmode == 3 ) ; difference angle test = abs( zangle - cangle ) elseif ( @trapmode == 4 ) ; magnitude test = cabs( ztemp ) elseif ( @trapmode == 5 ) ; trap magnitude test = cabs( tempc ) elseif ( @trapmode == 6 ) ; real test = abs( real( ztemp )) elseif ( @trapmode == 7 ) ; imaginary test = abs( imag( ztemp )) elseif ( @trapmode == 8 ) ; trap real test = abs( real( tempc )) elseif ( @trapmode == 9 ) ; trap imaginary test = abs( imag( tempc )) elseif ( @trapmode == 10 ) ; sum test = cabs( zscratch + tempc ) elseif ( @trapmode == 11 ) ; difference test = cabs( zscratch - tempc) elseif ( @trapmode == 12 ) ; product test = cabs( zscratch * tempc ) elseif ( @trapmode == 13 ) ; quotient 1 test = cabs( zscratch / tempc ) elseif ( @trapmode == 14 ) ; quotient 2 test = cabs( tempc / zscratch ) elseif ( @trapmode == 15 ) ; power 1 test = cabs( zscratch ^ tempc ) elseif ( @trapmode == 16 ) ; power 2 test = cabs( tempc ^ zscratch ) elseif ( @trapmode == 17 ) ; arithmetic mean test = cabs( (zscratch + tempc)/2 ) elseif ( @trapmode == 18 ) ; geometric mean test = cabs( sqrt( zscratch * tempc )) elseif ( @trapmode == 19 ) ; angle 2 test = atan2( zscratch - tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 20 ) ; angle 3 test = atan2( zscratch + tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 21 ) ; angle 4 test = atan2( zscratch * tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 22 ) ; angle 5 test = atan2( zscratch / tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 23 ) ; angle 6 test = atan2( tempc / zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 24 ) ; angle 7 test = atan2( zscratch ^ tempc ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 25 ) ; angle 8 test = atan2( tempc ^ zscratch ) if ( test < 0 ) test = test + twopi endif ; test elseif ( @trapmode == 26 ) ; real 2 test = abs( real( zscratch - tempc )) elseif ( @trapmode == 27 ) ; real 3 test = abs( real( zscratch + tempc )) elseif ( @trapmode == 28 ) ; real 4 test = abs( real( zscratch * tempc )) elseif ( @trapmode == 29 ) ; real 5 test = abs( real( zscratch / tempc )) elseif ( @trapmode == 30 ) ; real 6 test = abs( real( tempc / zscratch )) elseif ( @trapmode == 31 ) ; real 7 test = abs( real( zscratch ^ tempc )) elseif ( @trapmode == 32 ) ; real 8 test = abs( real( tempc ^ zscratch )) elseif ( @trapmode == 33 ) ; imag 2 test = abs( imag( zscratch - tempc )) elseif ( @trapmode == 34 ) ; imag 3 test = abs( imag( zscratch + tempc )) elseif ( @trapmode == 35 ) ; imag 4 test = abs( imag( zscratch * tempc )) elseif ( @trapmode == 36 ) ; imag 5 test = abs( imag( zscratch / tempc )) elseif ( @trapmode == 37 ) ; imag 6 test = abs( imag( tempc / zscratch )) elseif ( @trapmode == 38 ) ; imag 7 test = abs( imag( zscratch ^ tempc )) elseif ( @trapmode == 39 ) ; imag 8 test = abs( imag( tempc ^ zscratch )) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 1 ) ; maximum if ( test > trapped1 ) trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 2 ) ; 2nd minimum if ( test < trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 3 ) ; 3rd minimum if ( test < trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 4 ) ; 4th minimum if ( test < trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 5 ) ; 2nd maximum if ( test > trapped1 ) trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 6 ) ; 3rd maximum if ( test > trapped1 ) trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 7 ) ; 4th maximum if ( test > trapped1 ) trapped4 = trapped3, itrapped4 = itrapped3, zatrapped4 = zatrapped3, catrapped4 = catrapped3 ztrapped4 = ztrapped3, zttrapped4 = zttrapped3, ctrapped4 = ctrapped3 trapped3 = trapped2, itrapped3 = itrapped2, zatrapped3 = zatrapped2, catrapped3 = catrapped2 ztrapped3 = ztrapped2, zttrapped3 = zttrapped2, ctrapped3 = ctrapped2 trapped2 = trapped1, itrapped2 = itrapped, zatrapped2 = zatrapped, catrapped2 = catrapped ztrapped2 = ztrapped, zttrapped2 = zttrapped, ctrapped2 = ctrapped trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; test elseif ( @whattotrap == 8 ) ; 1st to dip below threshold value if ( itrapped == 0 ) ; nothing trapped yet if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest endif ; itrapped elseif ( @whattotrap == 9 ) ; last to dip below threshold --- just store them all if ( test < thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif ( @whattotrap == 10 ) ; count dips below threshold --- store the last if ( test < thresh ) count = count + 1 if !@ringstyle trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE elseif test > innerradius trapped1 = count * test, itrapped = count * iter zatrapped = count * zangle, catrapped = count * cangle ztrapped = count * #z, zttrapped = count * ztemp ctrapped = count * tempc, trapped = TRUE endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test > innerradius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; ztest 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 trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc elseif test < innerradius ; really an outer radius trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc endif ; ringstyle endif ; itrapped endif ; test elseif ( @whattotrap == 14 ) ; last to exceed threshold --- just store them all if ( test > thresh ) if !@ringstyle trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test < innerradius ; really an outer radius for limits trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE endif ; ringstyle endif ; ztest elseif @whattotrap > 14 ; maximum/minimum combos; need to find & store both ; trapped2 will hold he max, trapped1 the min if test < trapped1 ; is it a new min? trapped1 = test, itrapped = iter, zatrapped = zangle, catrapped = cangle ztrapped = #z, zttrapped = ztemp, ctrapped = tempc, trapped = TRUE elseif test > trapped2 ; is it a new max? trapped2 = test, itrapped2 = iter, zatrapped2 = zangle, catrapped2 = cangle ztrapped2 = #z, zttrapped2 = ztemp, ctrapped2 = tempc, trapped = TRUE 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 float value = 0.0 if @oldstyle value = cabs(ctrapped) sign = real(ctrapped)/abs(real(ctrapped)) else value = cabs(ztemp) sign = real(ztemp)/abs(real(ztemp)) endif ; oldstyle if @varyrotation rotation = rotation + rotationstep * rotation * value * sign endif ; varyrotation if @varyscale scale = scale + scalestep * scale * value * sign endif ; varyscale if @varythresh thresh = thresh + threshstep * thresh * value * 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 * value * sign if @whattotrap < 12 innerradius = thresh - rwidth else innerradius = thresh + rwidth endif ; whattotrap endif ; varyrwidth if @varyspread spread = spread + spreadstep * spread * value * sign endif ; varyspread if @varycenter tempx = real(center) + centerstep * real(center) * value * sign tempy = imag(center) + centerstep * imag(center) * value * sign center = tempx + flip( tempy ) endif ; varycenter if @varyturb turbulamount = turbulamount + turbstep * turbulamount * value * sign endif ; varyturb 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 trapped1 = trapped2, itrapped = itrapped2, zatrapped = zatrapped2, catrapped = catrapped2 ztrapped = ztrapped2, zttrapped = zttrapped2, ctrapped = ctrapped2 elseif (( @whattotrap == 3 ) || ( @whattotrap == 6 )) trapped1 = trapped3, itrapped = itrapped3, zatrapped = zatrapped3, catrapped = catrapped3 ztrapped = ztrapped3, zttrapped = zttrapped3, ctrapped = ctrapped3 elseif (( @whattotrap == 4 ) || ( @whattotrap == 7 )) trapped1 = trapped4, itrapped = itrapped4, zatrapped = zatrapped4, catrapped = catrapped4 ztrapped = ztrapped4, zttrapped = zttrapped4, ctrapped = ctrapped4 elseif @whattotrap == 15 ; max-min trapped1 = trapped2-trapped1, itrapped = itrapped2-itrapped zatrapped = zatrapped2-zatrapped, catrapped = catrapped2-catrapped ztrapped = ztrapped2-ztrapped, zttrapped = zttrapped2-zttrapped ctrapped = ctrapped2-ctrapped elseif @whattotrap == 16 ; max+min trapped1 = trapped2+trapped1, itrapped = itrapped2+itrapped zatrapped = zatrapped2+zatrapped, catrapped = catrapped2+catrapped ztrapped = ztrapped2+ztrapped, zttrapped = zttrapped2+zttrapped ctrapped = ctrapped2+ctrapped elseif @whattotrap == 17 ; max*min trapped1 = trapped2*trapped1, itrapped = itrapped2*itrapped zatrapped = zatrapped2*zatrapped, catrapped = catrapped2*catrapped ztrapped = ztrapped2*ztrapped, zttrapped = zttrapped2*zttrapped ctrapped = ctrapped2*ctrapped elseif @whattotrap == 18 ; max/min trapped1 = trapped2/trapped1, itrapped = round(itrapped2/itrapped) zatrapped = zatrapped2/zatrapped, catrapped = catrapped2/catrapped ztrapped = ztrapped2/ztrapped, zttrapped = zttrapped2/zttrapped ctrapped = ctrapped2/ctrapped elseif @whattotrap == 19 ; max^min trapped1 = trapped2^trapped1, itrapped = round(itrapped2^itrapped) zatrapped = zatrapped2^zatrapped, catrapped = catrapped2^catrapped ztrapped = ztrapped2^ztrapped, zttrapped = zttrapped2^zttrapped ctrapped = ctrapped2^ctrapped elseif @whattotrap == 20 ; min-max trapped1 = trapped1-trapped2, itrapped = itrapped-itrapped2 zatrapped = zatrapped-zatrapped2, catrapped = catrapped-catrapped2 ztrapped = ztrapped-ztrapped2, zttrapped = zttrapped-zttrapped2 ctrapped = ctrapped-ctrapped2 elseif @whattotrap == 21 ; min/max trapped1 = trapped1/trapped2, itrapped = round(itrapped/itrapped2) zatrapped = zatrapped/zatrapped2, catrapped = catrapped/catrapped2 ztrapped = ztrapped/ztrapped2, zttrapped = zttrapped/zttrapped2 ctrapped = ctrapped/ctrapped2 elseif @whattotrap == 22 ; min^max trapped1 = trapped1^trapped2, itrapped = round(itrapped^itrapped2) zatrapped = zatrapped^zatrapped2, catrapped = catrapped^catrapped2 ztrapped = ztrapped^ztrapped2, zttrapped = zttrapped^zttrapped2 ctrapped = ctrapped^ctrapped2 elseif @whattotrap == 23 ; average: (max+min)/2 trapped1 = (trapped1+trapped2)/2, itrapped = trunc((itrapped+itrapped2)/2) zatrapped = (zatrapped+zatrapped2)/2, catrapped = (catrapped+catrapped2)/2 ztrapped = (ztrapped+ztrapped2)/2, zttrapped = (zttrapped+zttrapped2)/2 ctrapped = (ctrapped+ctrapped2)/2 endif ; whattotrap ; Figure amount of 'random' turbulence if @turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6 float ca1 = float ca2 = float ca3 = float ca4 = float ca5 = float ca6 = 0.0 zinput = tlast*zlast*#random temp = cabs(zinput) if round(719*temp) % 2 == 0 ; 'random' sign sign = 1 else sign = -1 endif ; round if @turb1 ; product1 ca1 = turbulamount * 0.1 * sign * ((real(tlast)*real(tlast))/|tlast|) \ * ((real(zlast)*real(zlast))/|zlast|) endif ; turb1 if @turb2 ; random ca2 = turbulamount * 0.1 * sign * real(#random) endif ; turb2 if @turb3 ; fBm --- adapted from formulas of dmj, mt, and others complex br = (0,1) ^ (@bangle / 90.0) complex br2 = (0,1) ^ (@banglestep / 90.0) complex bp = zlast * @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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi ca3 = turbulamount * (bsum + 1) * 0.5 endif ; turb3 if @turb4 ; sin ca4 = turbulamount * 0.1 * sign * ((sin(817*real(zinput))+1)/2) endif ; turb4 if @turb5 ; log ca5 = turbulamount * 0.1 * sign * log(((temp-trunc(temp))*(#e-1))+1) endif ; turb5 if @turb6 ; vectors tempx = trunc(real(zinput)), tempy = trunc(imag(zinput)) float tempx1 = tempx + 1, float tempy1 = tempy + 1 complex t00 = tempx + flip(tempy), complex t10 = tempx1 + flip(tempy) complex t01 = tempx + flip(tempy1), complex t11 = tempx1 + flip(tempy1) tempx = trunc(real(zlast)), tempy = trunc(imag(zlast)) tempx1 = tempx + 1, tempy1 = tempy + 1 complex z00 = tempx + flip(tempy), complex z10 = tempx1 + flip(tempy) complex z01 = tempx + flip(tempy1), complex z11 = tempx1 + flip(tempy1) if real(tlast) >= 0 ; + if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z00-t00) else ; - temp = cabs(z00-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z00-t01) else ; - temp = cabs(z00-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z01-t00) else ; - temp = cabs(z01-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z01-t01) else ; - temp = cabs(z01-t11) endif endif endif else ; - if imag(tlast) >= 0 ; + if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z10-t00) else ; - temp = cabs(z10-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z10-t01) else ; - temp = cabs(z10-t11) endif endif else ; - if real(zlast) >= 0 ; + if imag(zlast) >= 0 ; + temp = cabs(z11-t00) else ; - temp = cabs(z11-t10) endif else ; - if imag(zlast) >= 0 ; + temp = cabs(z11-t01) else ; - temp = cabs(z11-t11) endif endif endif endif ca6 = turbulamount * 0.1 * sign * temp/cabs(zlast-tlast) endif ; turb6 _coloradjust = ca1 + ca2 + ca3 + ca4 + ca5 + ca6 endif ; turb1 || turb2... if ( @colorby == 0 ) ; distance temp = cabs( zttrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask elseif ( @colorby == 1 ) ; iteration if @mask if itrapped < @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp elseif @revmask if itrapped > @maskthresh #solid = TRUE else _color = 0.3 * spread * itrapped endif ; temp else _color = 0.3 * spread * itrapped endif ; @mask elseif ( @colorby == 2 ) ; magnitude temp = cabs( ztrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 0.25 * spread * temp endif ; temp else _color = 0.25 * spread * temp endif ; @mask elseif ( @colorby == 3 ) ; test if @mask if trapped1 < @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 elseif @revmask if trapped1 > @maskthresh #solid = TRUE else _color = spread * trapped1 endif ; trapped1 else _color = spread * trapped1 endif ; @mask elseif ( @colorby == 4 ) ; trap magnitude temp = cabs(ctrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 5 ) ; angle temp = atan2( ztrapped ) if ( temp < 0 ) temp = temp + twopi endif ; temp if @mask if temp < @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = ( spread * temp ) / twopi endif ; temp else _color = ( spread * temp ) / twopi endif ; @mask elseif ( @colorby == 6 ) ; trap angle if @mask if catrapped < @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped elseif @revmask if catrapped > @maskthresh #solid = TRUE else _color = ( spread * catrapped ) / twopi endif ; catrapped else _color = ( spread * catrapped ) / twopi endif ; @mask elseif ( @colorby == 7 ) ; modulated magnitude temp = cabs(zttrapped) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 8 ) ; modulated angle if @mask if zatrapped < @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped elseif @revmask if zatrapped > @maskthresh #solid = TRUE else _color = ( spread * zatrapped ) / twopi endif ; zatrapped else _color = ( spread * zatrapped ) / twopi endif ; @mask elseif ( @colorby == 9 ) ; real temp = abs( real( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 10 ) ; trap real temp = abs( real( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 11 ) ; modulated real temp = abs( real( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 12 ) ; imaginary temp = abs( imag( ztrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 13 ) ; trap imaginary temp = abs( imag( ctrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 14 ) ; modulated imaginary temp = abs( imag( zttrapped )) if @mask if temp < @maskthresh #solid = TRUE else _color = spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = spread * temp endif ; temp else _color = spread * temp endif ; @mask elseif ( @colorby == 15 ) ; raw distance (distance to #z, not ztemp) temp = cabs( ztrapped - ctrapped ) if @mask if temp < @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp elseif @revmask if temp > @maskthresh #solid = TRUE else _color = 3.0 * spread * temp endif ; temp else _color = 3.0 * spread * temp endif ; @mask endif ; _colorby if @ranges == 1 _color = _color + _coloradjust else if !@hideranges _color = ((_color + _coloradjust) + (itrapped % @ranges) ) / @ranges else temp = itrapped % @ranges if temp != @showrange #solid = TRUE else _color = ((_color + _coloradjust) + temp ) / @ranges endif ; temp endif ; hideranges endif ; ranges if ( @colorwarp == 0 ) temp = _color elseif ( @colorwarp == 1 ) temp = 1/_color elseif ( @colorwarp == 2 ) temp = _color * _color elseif ( @colorwarp == 3 ) temp = 1 / ( _color * _color ) elseif ( @colorwarp == 4 ) temp = log(_color) elseif ( @colorwarp == 5 ) temp = exp( _color) elseif ( @colorwarp == 6 ) temp = _color^_color elseif ( @colorwarp == 7 ) temp = sin( _color ) elseif ( @colorwarp == 8 ) temp = cos( _color ) elseif ( @colorwarp == 9 ) temp = tan( _color ) elseif ( @colorwarp == 10 ) temp = asin( _color ) elseif ( @colorwarp == 11 ) temp = acos( _color ) elseif ( @colorwarp == 12 ) temp = atan( _color ) elseif ( @colorwarp == 13 ) temp = sinh( _color ) elseif ( @colorwarp == 14 ) temp = cosh( _color ) elseif ( @colorwarp == 15 ) temp = tanh( _color ) elseif ( @colorwarp == 16 ) temp = asinh( _color ) elseif ( @colorwarp == 17 ) temp = acosh( _color ) elseif ( @colorwarp == 18 ) temp = atanh( _color ) elseif ( @colorwarp == 19 ) temp = log( 1/_color ) elseif ( @colorwarp == 20 ) temp = log( log( _color )) elseif ( @colorwarp == 21 ) temp = exp( -_color ) elseif ( @colorwarp == 22 ) temp = exp( 1/_color ) elseif ( @colorwarp == 23 ) temp = _color^(-_color) elseif ( @colorwarp == 24 ) temp = sin( _color ) temp = temp * temp elseif ( @colorwarp == 25 ) temp = cos( _color ) temp = temp * temp elseif ( @colorwarp == 26 ) temp = tan( _color ) temp = temp * temp elseif ( @colorwarp == 27 ) temp = cotan( _color ) elseif ( @colorwarp == 28 ) temp = 1/cos( _color ) elseif ( @colorwarp == 29 ) temp = 1/sin( _color ) elseif ( @colorwarp == 30 ) temp = cotan( _color ) temp = temp * temp elseif ( @colorwarp == 31 ) temp = 1/cos( _color ) temp = temp * temp elseif ( @colorwarp == 32 ) temp = 1/sin( _color ) temp = temp * temp elseif ( @colorwarp == 33 ) temp = _color^(_color) temp = _color^temp elseif ( @colorwarp == 34 ) temp = _color^(_color) temp = 1/( _color^temp ) elseif ( @colorwarp == 35 ) temp = log(-_color) elseif ( @colorwarp == 36 ) temp = 1/log( _color ) elseif ( @colorwarp == 37 ) temp = _color * log( _color ) elseif ( @colorwarp == 38 ) temp = sin( _color ) / _color elseif ( @colorwarp == 39 ) temp = cos( _color ) / _color elseif ( @colorwarp == 40 ) temp = sin( _color ) * cos( _color ) elseif ( @colorwarp == 41 ) temp = sin( _color^2 ) elseif ( @colorwarp == 42 ) temp = exp( -1/_color ) elseif ( @colorwarp == 43 ) temp = _color * exp( _color ) elseif ( @colorwarp == 44 ) temp = _color * exp( -_color ) elseif ( @colorwarp == 45 ) temp = _color * exp( 1/_color ) elseif ( @colorwarp == 46 ) temp = _color * exp( -1/_color ) elseif ( @colorwarp == 47 ) temp = _color * _color * _color elseif ( @colorwarp == 48 ) temp = 1 / ( _color * _color * _color ) elseif ( @colorwarp == 49 ) temp = atan( 1 / _color ) elseif ( @colorwarp == 50 ) temp = acos( 1 / _color ) elseif ( @colorwarp == 51 ) temp = asin( 1 / _color ) elseif ( @colorwarp == 52 ) temp = tan( _color ) / _color elseif ( @colorwarp == 53 ) temp = cotan( _color ) / _color elseif ( @colorwarp == 54 ) temp = 1 / ( _color * cos( _color )) elseif ( @colorwarp == 55 ) temp = 1 / ( _color * sin( _color )) elseif ( @colorwarp == 56 ) temp = _color * sin( _color ) elseif ( @colorwarp == 57 ) temp = _color * cos( _color ) elseif ( @colorwarp == 58 ) temp = _color * tan( _color ) elseif ( @colorwarp == 59 ) temp = _color * cotan( _color ) elseif ( @colorwarp == 60 ) temp = _color/cos( _color ) elseif ( @colorwarp == 61 ) temp = _color/sin( _color ) elseif ( @colorwarp == 62 ) temp = sin( 1/_color ) elseif ( @colorwarp == 63 ) temp = cos( 1/_color ) elseif ( @colorwarp == 64 ) temp = tan( 1/_color ) elseif ( @colorwarp == 65 ) temp = cotan( 1/_color ) elseif ( @colorwarp == 66 ) temp = 1/cos( 1/_color ) elseif ( @colorwarp == 67 ) temp = 1/sin( 1/_color ) elseif ( @colorwarp == 68 ) temp = cotanh( _color ) elseif ( @colorwarp == 69 ) temp = 1/cosh( _color ) elseif ( @colorwarp == 70 ) temp = 1/sinh( _color ) elseif ( @colorwarp == 71 ) temp = atanh( 1/_color ) elseif ( @colorwarp == 72 ) temp = acosh( 1/_color ) elseif ( @colorwarp == 73 ) temp = asinh( 1/_color ) elseif @colorwarp == 74 temp = _color^@cpower elseif @colorwarp == 75 temp = sinh(_color) temp = temp * temp elseif @colorwarp == 76 temp = cosh( _color ) temp = temp * temp elseif @colorwarp == 77 temp = tanh(_color) temp = temp * temp elseif @colorwarp == 78 temp = cotanh( _color ) temp = temp * temp elseif @colorwarp == 79 temp = 1/cosh(_color) temp = temp * temp elseif @colorwarp == 80 temp = 1 / sinh( _color ) temp = temp * temp elseif @colorwarp == 81 temp = sinh(1/_color) elseif @colorwarp == 82 temp = cosh(1/_color) elseif @colorwarp == 83 temp = tanh(1/_color) elseif @colorwarp == 84 temp = cotanh(1/_color) elseif @colorwarp == 85 temp = 1/cosh(1/_color) elseif @colorwarp == 86 temp = 1/sinh(1/_color) elseif @colorwarp == 87 temp = sin( _color ) * tan(_color) elseif @colorwarp == 88 temp = sinh(_color) * tanh(_color) elseif @colorwarp == 89 temp = sinh(_color) * cosh(_color) elseif @colorwarp == 90 temp = sinh(_color), tempx = cosh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 91 temp = sin(_color), tempx = cos(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 92 temp = 1/_color temp = sin(temp)*cos(temp) elseif @colorwarp == 93 temp = sin( 1/_color ) temp = temp*temp elseif @colorwarp == 94 temp = sin(_color) * cos(1/_color) elseif @colorwarp == 95 temp = sin(_color) * sin(1/_color) elseif @colorwarp == 96 temp = log(_color) temp = temp*temp elseif @colorwarp == 97 temp = sin(_color) * sin(2*_color) elseif @colorwarp == 98 temp = exp(2*_color) elseif @colorwarp == 99 temp = exp(-2*_color) elseif @colorwarp == 100 temp = 1/_color temp = sinh(temp)*cosh(temp) elseif @colorwarp == 101 temp = sinh( 1/_color ) temp = temp*temp elseif @colorwarp == 102 temp = sinh(_color) * cosh(1/_color) elseif @colorwarp == 103 temp = sinh(_color) * sinh(1/_color) elseif @colorwarp == 104 temp = sin(_color) * sinh(_color) elseif @colorwarp == 105 temp = sin(_color) * cosh(_color) elseif @colorwarp == 106 temp = sin(_color), tempx = sinh(_color) temp = temp*temp*tempx*tempx elseif @colorwarp == 107 temp = sin(_color)*exp(_color) elseif @colorwarp == 108 temp = cos(_color)*exp(_color) elseif @colorwarp == 109 temp = sinh(_color)*exp(_color) elseif @colorwarp == 110 temp = cosh(_color)*exp(_color) elseif @colorwarp == 111 temp = sin(_color)*log(_color) elseif @colorwarp == 112 temp = cos(_color)*log(_color) elseif @colorwarp == 113 temp = sinh(_color)*log(_color) else ; @colorwarp == 114 temp = cosh(_color)*log(_color) endif ; _colorwarp #index = abs(temp) else #solid = TRUE endif ; itrapped default: title = "Folium of Descartes Trap" 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" "max-min" "max+min" \ "max*min" "max/min" "max^min" "min-max" "min/max" "min^max" "min,max avg" default = 0 hint = "What type of value will be trapped?" 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. Increase value for limit traps" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) 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 )) endparam param threshstp caption = "ThreshFeedback" default = 1.0 hint = "If 'Vary Threshold' is set, this setting adjusts the amount of variation" visible = @varythresh endparam param ringstyle caption = "Enable Rings?" default = FALSE hint = "If 'Enable Rings' is active, AND if param 'Trap What' is set to a \ 'Threshold' or 'Limit' option, then 'Trap What' \ becomes a ring trap. \ 'Threshold Value' sets outer radius, 'Ring Width' sets inner radius" visible = (( @whattotrap > 7 ) && ( @whattotrap < 15 )) endparam param ringwidth caption = "Ring Width" default = 0.25 hint = "If 'Enable Rings' is TRUE and 'Trap What' is set to either a 'Threshold', \ or 'Limit' option, this parameter determines the width of the ring trap" visible = @ringstyle == TRUE endparam param varyrwidth caption = "Vary Ringwidth?" default = FALSE hint = "If set, the value of the trap will modify the ring width of 'threshold' \ and 'limit' ring-type traps each iteration; parameter 'RingFeedback' can be \ used to modulate the variation" visible = @ringstyle endparam param ringstp caption = "RingFeedback" default = 1.0 hint = "If 'Vary Ringwidth' is set, this setting adjusts the amount of variation" visible = @varyrwidth endparam param trapmode caption = "Trap Flavor" enum = "distance" "angle" "trap angle" "difference angle" "magnitude" "trap magnitude" \ "real" "imaginary" "trap real" "trap imaginary" "sum" "difference" "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 quantity will be watched for possible trapping?" endparam param swapflavor caption = "New Flavor?" default = FALSE hint = "Try an alternately flavored trap test? Only affects flavor choices \ above 9 (sum, difference, etc)" visible = @trapmode > 9 endparam param tscale caption = "Scale" default = 0.25 hint = "This parameter determines the size of the folium" endparam param varyscale caption = "Vary Scale?" default = FALSE hint = "If set, the value of the trap will modify the trap size each iteration; \ parameter 'ScaleFeedback' can be used to modulate the variation" endparam param scalestp caption = "ScaleFeedback" default = 1.0 hint = "If 'Vary Scale' is set, this setting adjusts the amount of variation" visible = @varyscale endparam param rotate caption = "Rotation Angle" default = 0.0 min = -179.9 max = 359.9 hint = "Number of degrees (0-359) that the folium should be rotated from its default position" 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" endparam param rotationstp caption = "RotationFeedback" default = 1.0 hint = "If 'Vary Rotation' is set, this setting adjusts the amount of variation" visible = @varyrotation endparam param centr caption = "Center" default = (0,0) hint = "Enter coordinates of folium center (origin)" 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" endparam param centerstp caption = "CenterFeedback" default = 1.0 hint = "If 'Vary Center' is set, this setting adjusts the amount of variation" visible = @varycenter endparam param sprangle caption = "Spread Angle?" default = FALSE hint = "If enabled, the angular range is spread out or compressed, \ depending on the value of param 'AngleSpread Factor'" 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 == TRUE 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)" default = 0 hint = "The fractal is initialized to this value at each iteration prior to \ being fed to the trap" endparam param zpower caption = "Z Power" default = (0,1) hint = "Z exponent if param 'Z Initialization' is set to 'z^power'" visible = @initialization == "z^power" endparam param ziscale caption = "Z Init Scale" default = 1.0 hint = "This param can be used to scale the overall iterate z \ before z initialization" 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" 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 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)" default = 0 hint = "The point, t, on the folium potentially trapped by z can be transformed \ prior to testing; select 't' for no transmutation. \ Transmute does not work on the following trap flavors: \ 2 (angle), 5 (magnitude), 7 (real), and 8 (imag)" endparam param tpower caption = "Trap Power" default = (0,1) hint = "Trap point t exponent if param 'Trap Transmute' is set to 't^power'" visible = @transmogrify == "t^power" endparam param tiscale caption = "Trap Scale" default = 1.0 hint = "This param can be used to scale the overall trap point t \ before transmutation" 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" 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 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)" 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'" 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" 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" 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" 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(z). \ Inactive if 'Perturb FrontEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rfperturb endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = @imagfront == "i^power" endparam param ifscale caption = "Imag(z) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" endparam param ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagfront != "i" endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(z). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb endparam param realback caption = "BackEndReal 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)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'" endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = @realback == "r^power" endparam param rbscale caption = "Real(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @realback != "r" endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'" endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = @imagback == "i^power" endparam param ibscale caption = "Imag(t) Scale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = @imagback != "i" endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb endparam param @colorby caption = "Color By?" enum = "distance" "iteration" "magnitude" "test" "trap magnitude" "angle" \ "trap angle" "mod magnitude" "mod angle" "real" "trap real" "mod real"\ "imag" "trap imag" "mod imag" "raw distance" default = 0 hint = "Criterion for computing color index" endparam param @colorspread caption = "Color Spread" default = 1.0 hint = "This value can increase or decrease the color index range; adjust \ if fractal coloring is too monotone" endparam param varyspread caption = "Vary Colorspread?" default = FALSE hint = "If set, the value of the trap will modify the color index spread each \ iteration; parameter 'SpreadFeedback' can be used to modulate the variation" endparam param spreadstp caption = "SpreadFeedback" default = 1.0 hint = "If 'Vary Colorspread' is set, this setting adjusts the amount of variation" visible = @varyspread endparam param ranges caption = "Color Ranges" default = 1 hint = "Different ranges of the color palette can be used, based on iteration" endparam param hideranges caption = "Mask Color Ranges?" default = FALSE hint = "If enabled, then param 'Show Which Range?' can be set to mask pixels \ other than those in the given range. Only valid if 'Color Ranges' > 1" visible = @ranges > 1 endparam param showrange caption = "Show Which Range?" default = 0 min = 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. Works best \ with param 'Trap What?' set to a threshold or limit option. 0 <= param < \ 'Color Ranges'" visible = @hideranges == TRUE 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)" default = 0 hint = "The final color index can be warped by this function; default is \ 'c' (no change in color index)" 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" endparam param skippediters caption = "Iterations to Skip" default = 0 hint = "Values will not be watched for trapping until after this many \ fractal iterations" 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" endparam param polar caption = "Polar Coordinates?" default = TRUE hint = "Alternative interpretation of trap value" endparam param trapvariant 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(z) and imag(z) before trapping" 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" 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" 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" )) endparam param history caption = "Enable History?" default = FALSE hint = "If enabled, both the previous and current z are used to determine \ trapping; a curvature-based coloring variant" endparam param histype caption = "History Type" enum = "middle aged" "old" "very old" default = 0 hint = "Determines curvature algorithm" visible = @history == TRUE 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" 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 == TRUE 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 == TRUE 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 == TRUE endparam param pointmode caption = "Enable Point Mode?" default = FALSE hint = "If set, trapping occurs normally until the first #z has been \ trapped using the usual criteria; subsequently, trapping is \ relative to this first trap point, rather than to the entire curve" endparam param turb1 caption = "Turbulence 1?" default = FALSE hint = "Adds distortion (Products) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb2 caption = "Turbulence 2?" default = FALSE hint = "Adds distortion (Random) to coloring; amount of turbulence \ is set for all types by parameter 'Turbulence Amount'" endparam param turb3 caption = "Turbulence 3?" default = FALSE hint = "Adds fBm distortion to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount', while \ the six 'fBm' params ('fBm Scale', 'fBm Rotation', etc) are \ specific to 'Turbulence 3'" endparam param turb4 caption = "Turbulence 4?" default = FALSE hint = "Adds distortion (Sine) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb5 caption = "Turbulence 5?" default = FALSE hint = "Adds distortion (Log) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turb6 caption = "Turbulence 6?" default = FALSE hint = "Adds distortion (Vectors) to coloring; amount of turbulence \ for all types is set by parameter 'Turbulence Amount'" endparam param turbamount caption = "Turbulence Amount" default = 1.0 hint = "Overall degree of texturizing, if any of the six 'Turbulence' \ parameters are enabled" visible = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of 'Turbulence 3', the fBm turbulence option" visible = @turb3 endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for 'Turbulence 3', fBm noise" visible = @turb3 endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "'Turbulence 3' scale step size for fBm noise iterations" visible = @turb3 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 = @turb3 endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the 'Turbulence 3' fBm noise function" visible = @turb3 endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param 'Turbulence 3' is enabled \ for fBm randomization" visible = @turb3 endparam param varyturb caption = "Vary Turbulence?" 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 = (@turb1 || @turb2 || @turb3 || @turb4 || @turb5 || @turb6) endparam param turbstp caption = "TurbulenceFeedback" default = 1.0 hint = "If 'Vary Turbulence' is set, this setting adjusts the amount of variation" visible = @varyturb endparam param mask caption = "Masking?" default = FALSE hint = "If enabled, trapped values below the 'Masking Threshold' parameter \ will be colored the solid color" visible = !@revmask endparam param revmask caption = "Reverse Masking?" default = FALSE hint = "If enabled, trapped values greater than the 'Masking Threshold' \ parameter will be colored the solid color; inactive if normal \ 'Masking' is also enabled" visible = !@mask endparam param maskthresh caption = "Masking Threshold" default = 0.1 hint = "This param is the value used for solid color masking if either \ 'Masking?' or 'Reverse Masking?' are enabled. Depending on how param \ 'Color By' is set, the value may need large adjustment (.001-10 may \ be useful)" visible = (@mask || @revmask) 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 = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam param oldstyle caption = "OldStyle Feedback?" default = FALSE hint = "Retained for compatibility with original version of this formula; \ enable if you need to render an early image utilizing this formula, \ or for a variant algorithm that generally produces less feedback variation" visible = (@varyturb || @varyscale || @varyrotation || @varythresh || @varyrwidth || @varycenter || @varyspread) endparam } jam-TIAfBm { ; ; This coloring method dmj's Triangle Inequality Average coloring ; method, with the addition of an fBm option. Much code pieced ; together without significant change from TIA and fBm code of dmj, ; mt, lkm, and others. ; maddry@sri.org 070919 ; global: float il = 1/log(@power) float lp = log(log(@bailout)/2.0) float ipower = 1/@apower float twopi = 2.0 * #pi float banglevar = @bangle/90.0 float banglestepvar = @banglestep / 90.0 float hypocycvar1 = @fbmhypocyc1 - @fbmhypocyc2 float hypocycvar2 = hypocycvar1/@fbmhypocyc2 init: float sum = 0.0 float sum2 = 0.0 float ac = cabs(#pixel) float az2 = 0.0 float lowbound = 0.0 float f = 0.0 BOOL first = true ; jam additions int iter = 0 complex zmin = complex zfirst = complex ztwo = complex zlast = complex zpenult = (0,0) complex zthree = complex zfour = complex zantepenult = complex zfBm = (0,0) complex zminstar = (0,0) complex ztemp = (0,0) float ftemp = float ftemp2 = 0.0 float minz = float minstarz = 1.0e9 float tempcindex = float fbmadjust = 0.0 float zangle = 0.0 loop: iter = iter+1 sum2 = sum IF (!first) az2 = cabs(#z - #pixel) lowbound = abs(az2 - ac) IF (@aflavor == 0) sum = sum + ((cabs(#z) - lowbound) / (az2+ac - lowbound))^@apower ELSEIF (@aflavor == 1) sum = sum + 1-(1-(cabs(#z) - lowbound) / (az2+ac - lowbound))^ipower ENDIF ELSE first = false ENDIF if @fBm if @fbminit == "min z" if iter > 1 ; skip first iter, since #z may have been initialized to (0,0) ftemp = cabs(#z) if ftemp < minz minz = ftemp zmin = #z endif ; ftemp endif ; iter elseif @fbminit == "min* z" if iter > 2 ; skip another iteration ftemp = cabs(#z) if ftemp < minstarz minstarz = ftemp zminstar = #z endif ; ftemp endif ; iter elseif @fbminit == "first z" if iter == 1 zfirst = #z endif ; iter elseif @fbminit == "second z" if iter == 2 ztwo = #z endif ; iter elseif @fbminit == "third z" if iter == 3 zthree = #z endif ; iter elseif @fbminit == "fourth z" if iter == 4 zfour = #z endif ; iter elseif @fbminit == "last z" zlast = #z elseif @fbminit == "penult z" zpenult = zlast zlast = #z elseif @fbminit == "antepenult z" zantepenult = zpenult zpenult = zlast zlast = #z endif ; @fbminit endif ; @fBm final: sum = sum / (#numiter) sum2 = sum2 / (#numiter-1) f = il*lp - il*log(log(cabs(#z))) tempcindex = sum2 + (sum-sum2) * (f+1) ; Figure amount of fBm ; fBm code adapted from code of dmj, mt, and others if @fBm if @fbminit == "min z" zfBm = zmin elseif @fbminit == "min* z" zfBm = zminstar elseif @fbminit == "first z" zfBm = zfirst elseif @fbminit == "second z" zfBm = ztwo elseif @fbminit == "third z" zfBm = zthree elseif @fbminit == "fourth z" zfBm = zfour elseif @fbminit == "last z" zfBm = zlast elseif @fbminit == "penult z" zfBm = zpenult elseif @fbminit == "antepenult z" zfBm = zantepenult elseif @fbminit == "TIA" zfBm = sum + flip(sum2) elseif @fbminit == "pixel" zfBm = #pixel ; elseif @fbminit == "blend1" ; if @fbmblendmode2 == "normal" ; ztemp = zfirst ; elseif @fbmblendmode2 == "negate" ; ztemp = -zfirst ; elseif @fbmblendmode2 == "flip" ; ztemp = flip(zfirst) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj(zfirst) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj(zfirst)) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = zmin*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = zmin+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = zmin-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = zmin/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = zmin^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-zmin ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/zmin ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^zmin ; endif; @fbmblendmode1 ; elseif @fbminit == "blend2" ; if @fbmblendmode2 == "normal" ; ztemp = ztwo ; elseif @fbmblendmode2 == "negate" ; ztemp = -ztwo ; elseif @fbmblendmode2 == "flip" ; ztemp = flip(ztwo) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj(ztwo) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj(ztwo)) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = zmin*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = zmin+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = zmin-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = zmin/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = zmin^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-zmin ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/zmin ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^zmin ; endif; @fbmblendmode1 ; elseif @fbminit == "blend3" ; if @fbmblendmode2 == "normal" ; ztemp = (sum+flip(sum2)) ; elseif @fbmblendmode2 == "negate" ; ztemp = -(sum+flip(sum2)) ; elseif @fbmblendmode2 == "flip" ; ztemp = flip((sum+flip(sum2))) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj((sum+flip(sum2))) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj((sum+flip(sum2)))) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = zmin*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = zmin+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = zmin-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = zmin/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = zmin^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-zmin ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/zmin ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^zmin ; endif; @fbmblendmode1 ; elseif @fbminit == "blend4" ; if @fbmblendmode2 == "normal" ; ztemp = zfirst ; elseif @fbmblendmode2 == "negate" ; ztemp = -zfirst ; elseif @fbmblendmode2 == "flip" ; ztemp = flip(zfirst) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj(zfirst) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj(zfirst)) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = ztwo*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = ztwo+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = ztwo-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = ztwo/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = ztwo^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-ztwo ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/ztwo ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^ztwo ; endif; @fbmblendmode1 ; elseif @fbminit == "blend5" ; if @fbmblendmode2 == "normal" ; ztemp = ztwo ; elseif @fbmblendmode2 == "negate" ; ztemp = -ztwo ; elseif @fbmblendmode2 == "flip" ; ztemp = flip(ztwo) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj(ztwo) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj(ztwo)) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = ztwo*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = ztwo+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = ztwo-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = ztwo/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = ztwo^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-ztwo ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/ztwo ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^ztwo ; endif; @fbmblendmode1 ; elseif @fbminit == "blend6" ; if @fbmblendmode2 == "normal" ; ztemp = (sum+flip(sum2)) ; elseif @fbmblendmode2 == "negate" ; ztemp = -(sum+flip(sum2)) ; elseif @fbmblendmode2 == "flip" ; ztemp = flip((sum+flip(sum2))) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj((sum+flip(sum2))) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj((sum+flip(sum2)))) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = ztwo*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = ztwo+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = ztwo-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = ztwo/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = ztwo^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-ztwo ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/ztwo ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^ztwo ; endif; @fbmblendmode1 ; elseif @fbminit == "blend7" ; if @fbmblendmode2 == "normal" ; ztemp = zfirst ; elseif @fbmblendmode2 == "negate" ; ztemp = -zfirst ; elseif @fbmblendmode2 == "flip" ; ztemp = flip(zfirst) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj(zfirst) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj(zfirst)) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = (sum+flip(sum2))*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = (sum+flip(sum2))+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = (sum+flip(sum2))-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = (sum+flip(sum2))/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = (sum+flip(sum2))^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-(sum+flip(sum2)) ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/(sum+flip(sum2)) ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^(sum+flip(sum2)) ; endif; @fbmblendmode1 ; elseif @fbminit == "blend8" ; if @fbmblendmode2 == "normal" ; ztemp = zthree ; elseif @fbmblendmode2 == "negate" ; ztemp = -zthree ; elseif @fbmblendmode2 == "flip" ; ztemp = flip(zthree) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj(zthree) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj(zthree)) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = (sum+flip(sum2))*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = (sum+flip(sum2))+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = (sum+flip(sum2))-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = (sum+flip(sum2))/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = (sum+flip(sum2))^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-(sum+flip(sum2)) ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/(sum+flip(sum2)) ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^(sum+flip(sum2)) ; endif; @fbmblendmode1 ; elseif @fbminit == "blend9" ; if @fbmblendmode2 == "normal" ; ztemp = zantepenult ; elseif @fbmblendmode2 == "negate" ; ztemp = -zantepenult ; elseif @fbmblendmode2 == "flip" ; ztemp = flip(zantepenult) ; elseif @fbmblendmode2 == "conj" ; ztemp = conj(zantepenult) ; elseif @fbmblendmode2 == "flip-conj" ; ztemp = flip(conj(zantepenult)) ; endif; @fbmblendmode2 ; if @fbmblendmode1 == "*" ; zfBm = (sum+flip(sum2))*ztemp ; elseif @fbmblendmode1 == "+" ; zfBm = (sum+flip(sum2))+ztemp ; elseif @fbmblendmode1 == "-" ; zfBm = (sum+flip(sum2))-ztemp ; elseif @fbmblendmode1 == "/" ; zfBm = (sum+flip(sum2))/ztemp ; elseif @fbmblendmode1 == "^" ; zfBm = (sum+flip(sum2))^ztemp ; elseif @fbmblendmode1 == "--" ; zfBm = ztemp-(sum+flip(sum2)) ; elseif @fbmblendmode1 == "//" ; zfBm = ztemp/(sum+flip(sum2)) ; elseif @fbmblendmode1 == "^^" ; zfBm = ztemp^(sum+flip(sum2)) ; endif; @fbmblendmode1 endif ; @fbminit if @fbmtransform zangle = atan2(zfBm) if zangle < 0 zangle = zangle + twopi endif ; zangle if @fbmtransformfunc == "circle" ftemp = @fbmcradius*cos(@fbmcfrequency*zangle) zfBm = ftemp*exp(flip(zangle)) elseif @fbmtransformfunc == "cardioid" ftemp = @fbmcardradius - @fbmcardradius*cos(@fbmcardfreq*zangle) zfBm = ftemp*exp(flip(zangle)) elseif @fbmtransformfunc == "lissajous" ftemp = @fbmlissaamp1 * cos(@fbmlissafreq1*zangle + @fbmlissaphase1) ftemp2 = @fbmlissaamp2 * cos(@fbmlissafreq2*zangle + @fbmlissaphase2) zfBm = ftemp + flip(ftemp2) elseif @fbmtransformfunc == "hypocycloid" ftemp = hypocycvar1 * cos(zangle) - @fbmhypocyc2 * cos(hypocycvar2*zangle) ftemp2 = hypocycvar1 * sin(zangle) + @fbmhypocyc2 * sin(hypocycvar2*zangle) zfBm = ftemp + flip(ftemp2) elseif @fbmtransformfunc == "parabola" ftemp = @fbmparabscale/(@fbmparaboffset+cos(@fbmparabfreq*zangle)) zfBm = ftemp*exp(flip(zangle)) endif; @transformfunc endif; @transform if @fbmhybrid ztemp = @fbmhybridweight*#pixel if @fbmhybridtype == "*" zfBm = ztemp*zfBm elseif @fbmhybridtype == "+" zfBm = ztemp+zfBm elseif @fbmhybridtype == "-" zfBm = ztemp-zfBm elseif @fbmhybridtype == "/" zfBm = ztemp/zfBm elseif @fbmhybridtype == "^" zfBm = ztemp^zfBm elseif @fbmhybridtype == "--" zfBm = zfBm-ztemp elseif @fbmhybridtype == "//" zfBm = zfBm/ztemp elseif @fbmhybridtype == "^^" zfBm = zfBm^ztemp elseif @fbmhybridtype == "average" zfBm = (ztemp+zfBm)/2 elseif @fbmhybridtype == "geom mean" zfBm = sqrt(ztemp*zfBm) endif; @fbmhybridtype endif; @fbmhybrid if @fbmbias zfBm = zfBm*@fbmbiasamount endif ; @fbmbias zfBm = zfBm + @boffset float bfreq = @bbfreq complex br = (0,1) ^ banglevar complex br2 = (0,1) ^ banglestepvar complex bp = zfBm * @bscale * br float bsum = 0.0 int bi = @boctaves while (bi > 0) float bx0 = floor(real(bp)) % @fbmint1 float by0 = floor(imag(bp)) % @fbmint1 if bx0 < 0 bx0 = bx0 + @fbmint1 endif ; bx0 if by0 < 0 by0 = by0 + @fbmint1 endif ; by0 float bx1 = (bx0 + 1) % @fbmint1 float by1 = (by0 + 1) % @fbmint1 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 % @fbmint2 + by0)^@bpower % @fbmint2 float b10 = (bx1^@bpower % @fbmint2 + by0)^@bpower % @fbmint2 float b01 = (bx0^@bpower % @fbmint2 + by1)^@bpower % @fbmint2 float b11 = (bx1^@bpower % @fbmint2 + by1)^@bpower % @fbmint2 float g_b00_0 = (b00)^@bpower*0.25 % @fbmint3 - @fbmint1 float g_b10_0 = (b10)^@bpower*0.25 % @fbmint3 - @fbmint1 float g_b01_0 = (b01)^@bpower*0.25 % @fbmint3 - @fbmint1 float g_b11_0 = (b11)^@bpower*0.25 % @fbmint3 - @fbmint1 float g_b00_1 = (b00+1)^@bpower*0.25 % @fbmint3 - @fbmint1 float g_b10_1 = (b10+1)^@bpower*0.25 % @fbmint3 - @fbmint1 float g_b01_1 = (b01+1)^@bpower*0.25 % @fbmint3 - @fbmint1 float g_b11_1 = (b11+1)^@bpower*0.25 % @fbmint3 - @fbmint1 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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-ba))* bfreq if @fbmfunc != 0 bsum = @funcprescale * bsum if ( @fbmfunc == 1 ) ftemp = 1/bsum elseif ( @fbmfunc == 2 ) ftemp = bsum * bsum elseif ( @fbmfunc == 3 ) ftemp = 1 / ( bsum * bsum ) elseif ( @fbmfunc == 4 ) ftemp = @funcparam1*log(bsum) elseif ( @fbmfunc == 5 ) ftemp = @funcparam1*exp( bsum) elseif ( @fbmfunc == 6 ) ftemp = @funcparam1*bsum^(bsum) elseif ( @fbmfunc == 7 ) ftemp = @funcparam1*sin( bsum ) elseif ( @fbmfunc == 8 ) ftemp = @funcparam1*cos( bsum ) elseif ( @fbmfunc == 9 ) ftemp = @funcparam1*tan( bsum ) elseif ( @fbmfunc == 10 ) ftemp = @funcparam1*asin( bsum ) elseif ( @fbmfunc == 11 ) ftemp = @funcparam1*acos( bsum ) elseif ( @fbmfunc == 12 ) ftemp = @funcparam1*atan( bsum ) elseif ( @fbmfunc == 13 ) ftemp = @funcparam1*sinh( bsum ) elseif ( @fbmfunc == 14 ) ftemp = @funcparam1*cosh( bsum ) elseif ( @fbmfunc == 15 ) ftemp = @funcparam1*tanh( bsum ) elseif ( @fbmfunc == 16 ) ftemp = @funcparam1*asinh( bsum ) elseif ( @fbmfunc == 17 ) ftemp = @funcparam1*acosh( bsum ) elseif ( @fbmfunc == 18 ) ftemp = @funcparam1*atanh( bsum ) elseif ( @fbmfunc == 19 ) ftemp = @funcparam1*log( 1/bsum ) elseif ( @fbmfunc == 20 ) ftemp = @funcparam1*log( @funcparam2*log( bsum )) elseif ( @fbmfunc == 21 ) ftemp = @funcparam1*exp( -bsum ) elseif ( @fbmfunc == 22 ) ftemp = @funcparam1*exp( 1/bsum ) elseif ( @fbmfunc == 23 ) ftemp = @funcparam1*bsum^(-bsum) elseif ( @fbmfunc == 24 ) ftemp = @funcparam1*(sin( bsum ))^@funcparam2 elseif ( @fbmfunc == 25 ) ftemp = @funcparam1*(cos( bsum ))^@funcparam2 elseif ( @fbmfunc == 26 ) ftemp = @funcparam1*(tan( bsum ))^@funcparam2 elseif ( @fbmfunc == 27 ) ftemp = @funcparam1*cotan( bsum ) elseif ( @fbmfunc == 28 ) ftemp = @funcparam1/cos( bsum ) elseif ( @fbmfunc == 29 ) ftemp = @funcparam1/sin( bsum ) elseif ( @fbmfunc == 30 ) ftemp = @funcparam1*(cotan( bsum ))^@funcparam2 elseif ( @fbmfunc == 31 ) ftemp = @funcparam1/(cos( bsum ))^@funcparam2 elseif ( @fbmfunc == 32 ) ftemp = @funcparam1/(sin( @funcparam1*bsum ))^@funcparam2 elseif ( @fbmfunc == 33 ) ftemp = @funcparam1*bsum^(bsum) ftemp = @funcparam2*bsum^(ftemp) elseif ( @fbmfunc == 34 ) ftemp = @funcparam1*bsum^(bsum) ftemp = @funcparam2/( bsum^ftemp ) elseif ( @fbmfunc == 35 ) ftemp = @funcparam1*log(-bsum) elseif ( @fbmfunc == 36 ) ftemp = @funcparam1/log( bsum ) elseif ( @fbmfunc == 37 ) ftemp = @funcparam1* bsum * log( bsum ) elseif ( @fbmfunc == 38 ) ftemp = @funcparam1* sin( bsum ) / bsum elseif ( @fbmfunc == 39 ) ftemp = @funcparam1* cos( bsum ) / bsum elseif ( @fbmfunc == 40 ) ftemp = @funcparam1* sin( bsum ) * cos( @funcparam2*bsum ) elseif ( @fbmfunc == 41 ) ftemp = @funcparam1*sin( bsum^2 ) elseif ( @fbmfunc == 42 ) ftemp = @funcparam1*exp( -1/bsum ) elseif ( @fbmfunc == 43 ) ftemp = @funcparam1* bsum * exp( bsum ) elseif ( @fbmfunc == 44 ) ftemp = @funcparam1* bsum * exp( -bsum ) elseif ( @fbmfunc == 45 ) ftemp = @funcparam1* bsum * exp( 1/bsum ) elseif ( @fbmfunc == 46 ) ftemp = @funcparam1* bsum * exp( -1/bsum ) elseif ( @fbmfunc == 47 ) ftemp = @funcparam1* bsum * bsum * bsum elseif ( @fbmfunc == 48 ) ftemp = @funcparam1 / ( bsum * bsum * bsum ) elseif ( @fbmfunc == 49 ) ftemp = @funcparam1*atan( 1 / bsum ) elseif ( @fbmfunc == 50 ) ftemp = @funcparam1*acos( 1 / bsum ) elseif ( @fbmfunc == 51 ) ftemp = @funcparam1*asin( 1 / bsum ) elseif ( @fbmfunc == 52 ) ftemp = @funcparam1*tan( bsum ) / bsum elseif ( @fbmfunc == 53 ) ftemp = @funcparam1*cotan( bsum ) / bsum elseif ( @fbmfunc == 54 ) ftemp = @funcparam1 / ( bsum * cos( bsum )) elseif ( @fbmfunc == 55 ) ftemp = @funcparam1 / ( bsum * sin( bsum )) elseif ( @fbmfunc == 56 ) ftemp = @funcparam1* bsum * sin( bsum ) elseif ( @fbmfunc == 57 ) ftemp = @funcparam1* bsum * cos( bsum ) elseif ( @fbmfunc == 58 ) ftemp = @funcparam1* bsum * tan( bsum ) elseif ( @fbmfunc == 59 ) ftemp = @funcparam1* bsum * cotan( bsum ) elseif ( @fbmfunc == 60 ) ftemp = @funcparam1*bsum/cos( bsum ) elseif ( @fbmfunc == 61 ) ftemp = @funcparam1*bsum/sin( bsum ) elseif ( @fbmfunc == 62 ) ftemp = @funcparam1*sin( 1/bsum ) elseif ( @fbmfunc == 63 ) ftemp = @funcparam1*cos( 1/bsum ) elseif ( @fbmfunc == 64 ) ftemp = @funcparam1*tan( 1/bsum ) elseif ( @fbmfunc == 65 ) ftemp = @funcparam1*cotan( 1/bsum ) elseif ( @fbmfunc == 66 ) ftemp = @funcparam1/cos( 1/bsum ) elseif ( @fbmfunc == 67 ) ftemp = @funcparam1/sin( 1/bsum ) elseif ( @fbmfunc == 68 ) ftemp = @funcparam1*cotanh( bsum ) elseif ( @fbmfunc == 69 ) ftemp = @funcparam1/cosh( bsum ) elseif ( @fbmfunc == 70 ) ftemp = @funcparam1/sinh( bsum ) elseif ( @fbmfunc == 71 ) ftemp = @funcparam1*atanh( 1/bsum ) elseif ( @fbmfunc == 72 ) ftemp = @funcparam1*acosh( 1/bsum ) elseif ( @fbmfunc == 73 ) ftemp = @funcparam1*asinh( 1/bsum ) elseif @fbmfunc == 74 ftemp = bsum^@funcpower elseif @fbmfunc == 75 ftemp = @funcparam1*(sinh(bsum))^@funcparam2 elseif @fbmfunc == 76 ftemp = @funcparam1*(cosh( bsum ))^@funcparam2 elseif @fbmfunc == 77 ftemp = @funcparam1*(tanh(bsum))^@funcparam2 elseif @fbmfunc == 78 ftemp = @funcparam1*(cotanh( bsum ))^@funcparam2 elseif @fbmfunc == 79 ftemp = @funcparam1*(1/cosh(bsum))^@funcparam2 elseif @fbmfunc == 80 ftemp = @funcparam1*(1 / sinh( bsum ))^@funcparam2 elseif @fbmfunc == 81 ftemp = @funcparam1*sinh(1/bsum) elseif @fbmfunc == 82 ftemp = @funcparam1*cosh(1/bsum) elseif @fbmfunc == 83 ftemp = @funcparam1*tanh(1/bsum) elseif @fbmfunc == 84 ftemp = @funcparam1*cotanh(1/bsum) elseif @fbmfunc == 85 ftemp = @funcparam1/cosh(1/bsum) elseif @fbmfunc == 86 ftemp = @funcparam1/sinh(1/bsum) elseif @fbmfunc == 87 ftemp = @funcparam1*sin( bsum ) * tan(@funcparam2*bsum) elseif @fbmfunc == 88 ftemp = @funcparam1*sinh(bsum) * tanh(@funcparam2*bsum) elseif @fbmfunc == 89 ftemp = @funcparam1*sinh(bsum) * cosh(@funcparam2*bsum) elseif @fbmfunc == 90 ftemp = (sinh(bsum)^@funcparam1)*(cosh(bsum)^@funcparam2) elseif @fbmfunc == 91 ftemp = (sin(bsum)^@funcparam1)*(cos(bsum)^@funcparam2) elseif @fbmfunc == 92 ftemp = 1/bsum ftemp = @funcparam1*sin(ftemp)*cos(@funcparam2*ftemp) elseif @fbmfunc == 93 ftemp = @funcparam1*(sin( 1/bsum ))^@funcparam2 elseif @fbmfunc == 94 ftemp = @funcparam1* sin(bsum) * cos(@funcparam2/bsum) elseif @fbmfunc == 95 ftemp = @funcparam1* sin(bsum) * sin(@funcparam2/bsum) elseif @fbmfunc == 96 ftemp = (log(bsum))^@funcparam1 elseif @fbmfunc == 97 ftemp = @funcparam1*sin(bsum) * sin(@funcparam2*bsum) elseif @fbmfunc == 98 ftemp = exp(2*bsum) elseif @fbmfunc == 99 ftemp = exp(-2*bsum) elseif @fbmfunc == 100 ftemp = 1/bsum ftemp = @funcparam1*sinh(ftemp)*cosh(@funcparam2*ftemp) elseif @fbmfunc == 101 ftemp = @funcparam1*(sinh( 1/bsum )^@funcparam2) elseif @fbmfunc == 102 ftemp = @funcparam1*sinh(bsum) * cosh(@funcparam2/bsum) elseif @fbmfunc == 103 ftemp = @funcparam1*sinh(bsum) * sinh(@funcparam2/bsum) elseif @fbmfunc == 104 ftemp = @funcparam1*sin(bsum) * sinh(@funcparam2*bsum) elseif @fbmfunc == 105 ftemp = @funcparam1*sin(bsum) * cosh(@funcparam2*bsum) elseif @fbmfunc == 106 ftemp = (sin(bsum)^@funcparam1)*(sinh(bsum)^@funcparam2) elseif @fbmfunc == 107 ftemp = @funcparam1*sin(bsum)*exp(@funcparam2*bsum) elseif @fbmfunc == 108 ftemp = @funcparam1*cos(bsum)*exp(@funcparam2*bsum) elseif @fbmfunc == 109 ftemp = @funcparam1*sinh(bsum)*exp(@funcparam2*bsum) elseif @fbmfunc == 110 ftemp = @funcparam1*cosh(bsum)*exp(@funcparam2*bsum) elseif @fbmfunc == 111 ftemp = @funcparam1*sin(bsum)*log(@funcparam2*bsum) elseif @fbmfunc == 112 ftemp = @funcparam1*cos(bsum)*log(@funcparam2*bsum) elseif @fbmfunc == 113 ftemp = @funcparam1*sinh(bsum)*log(@funcparam2*bsum) elseif @fbmfunc == 114 ftemp = @funcparam1*cosh(bsum)*log(@funcparam2*bsum) elseif @fbmfunc == 115 ftemp = @funcparam1*exp(bsum^@funcparam2) elseif @fbmfunc == 116 ftemp = @funcparam1*exp(1/(bsum^@funcparam2)) elseif @fbmfunc == 117 ftemp = abs(bsum) elseif @fbmfunc == 118 ftemp = round(bsum) elseif @fbmfunc == 119 ftemp = trunc(bsum) elseif @fbmfunc == 120 ftemp = ceil(bsum) elseif @fbmfunc == 121 ftemp = floor(bsum) elseif @fbmfunc == 122 ftemp = @funcparam1*bsum/log(bsum) elseif @fbmfunc == 123 ftemp = @funcparam1*log(bsum)/bsum elseif @fbmfunc == 124 ftemp = @funcparam1*exp(bsum)/bsum elseif @fbmfunc == 125 ftemp = @funcparam1*exp(1/bsum)/bsum elseif @fbmfunc == 126 ftemp = @funcparam1*exp(bsum^@funcparam2)/bsum elseif @fbmfunc == 127 ftemp = @funcparam1*exp(1/(bsum^@funcparam2))/bsum elseif @fbmfunc == 128 ftemp = @funcparam1*bsum * exp(bsum^@funcparam2) elseif @fbmfunc == 129 ftemp = @funcparam1*bsum * exp(1/(bsum^@funcparam2)) elseif @fbmfunc == 130 ftemp = @funcparam1*exp(-(bsum^@funcparam2)) elseif @fbmfunc == 131 ftemp = @funcparam1*exp(-1/(bsum^@funcparam2)) elseif @fbmfunc == 132 ftemp = @funcparam1*exp(-(bsum^@funcparam2))/bsum elseif @fbmfunc == 133 ftemp = @funcparam1*exp(-1/(bsum^@funcparam2))/bsum elseif @fbmfunc == 134 ftemp = @funcparam1*bsum * exp(-(bsum^@funcparam2)) elseif @fbmfunc == 135 ftemp = @funcparam1*bsum * exp(-1/(bsum^@funcparam2)) else ; @fbmfunc == 136 ftemp = bsum % @funcparam1 endif ; bsumwarp bsum = ftemp endif ; @fbmfunc bsum = (bsum + @bsumoffset) * @bpostscale bfreq = bfreq * @bstep bp = bp * br2 / @bstep bi = bi - 1 endwhile ; bi fbmadjust = @fbmamount * (bsum + 1) endif ; @fBm if ( @colorwarp == 0 ) ftemp = tempcindex elseif ( @colorwarp == 1 ) ftemp = 1/tempcindex elseif ( @colorwarp == 2 ) ftemp = tempcindex * tempcindex elseif ( @colorwarp == 3 ) ftemp = 1 / ( tempcindex * tempcindex ) elseif ( @colorwarp == 4 ) ftemp = log(@cpower*(1+tempcindex)) elseif ( @colorwarp == 5 ) ftemp = exp( @cpower*tempcindex) elseif ( @colorwarp == 6 ) ftemp = tempcindex^(@cpower*tempcindex) elseif ( @colorwarp == 7 ) ftemp = sin( @cpower*tempcindex ) elseif ( @colorwarp == 8 ) ftemp = cos( @cpower*tempcindex ) elseif ( @colorwarp == 9 ) ftemp = tan( @cpower*tempcindex ) elseif ( @colorwarp == 10 ) ftemp = asin( @cpower*tempcindex ) elseif ( @colorwarp == 11 ) ftemp = acos( @cpower*tempcindex ) elseif ( @colorwarp == 12 ) ftemp = atan( @cpower*tempcindex ) elseif ( @colorwarp == 13 ) ftemp = sinh( @cpower*tempcindex ) elseif ( @colorwarp == 14 ) ftemp = cosh( @cpower*tempcindex ) elseif ( @colorwarp == 15 ) ftemp = tanh( @cpower*tempcindex ) elseif ( @colorwarp == 16 ) ftemp = asinh(@cpower* tempcindex ) elseif ( @colorwarp == 17 ) ftemp = acosh( @cpower*tempcindex ) elseif ( @colorwarp == 18 ) ftemp = atanh( @cpower*tempcindex ) elseif ( @colorwarp == 19 ) ftemp = log( 1+@cpower/tempcindex ) elseif ( @colorwarp == 20 ) ftemp = log( 1+log( @cpower+tempcindex )) elseif ( @colorwarp == 21 ) ftemp = exp( -@cpower*tempcindex ) elseif ( @colorwarp == 22 ) ftemp = exp( @cpower/tempcindex ) elseif ( @colorwarp == 23 ) ftemp = tempcindex^(-@cpower*tempcindex) elseif ( @colorwarp == 24 ) ftemp = sin( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif ( @colorwarp == 25 ) ftemp = cos( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif ( @colorwarp == 26 ) ftemp = tan( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif ( @colorwarp == 27 ) ftemp = cotan( @cpower*tempcindex ) elseif ( @colorwarp == 28 ) ftemp = 1/cos( @cpower*tempcindex ) elseif ( @colorwarp == 29 ) ftemp = 1/sin( @cpower*tempcindex ) elseif ( @colorwarp == 30 ) ftemp = cotan( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif ( @colorwarp == 31 ) ftemp = 1/cos( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif ( @colorwarp == 32 ) ftemp = 1/sin( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif ( @colorwarp == 33 ) ftemp = tempcindex^(tempcindex) ftemp = tempcindex^(@cpower*ftemp) elseif ( @colorwarp == 34 ) ftemp = tempcindex^(tempcindex) ftemp = 1/( tempcindex^(@cpower*ftemp )) elseif ( @colorwarp == 35 ) ftemp = log(-@cpower*tempcindex) elseif ( @colorwarp == 36 ) ftemp = 1/log(@cpower*(1+ tempcindex )) elseif ( @colorwarp == 37 ) ftemp = tempcindex * log(1+ @cpower*tempcindex ) elseif ( @colorwarp == 38 ) ftemp = sin( @cpower*tempcindex ) / tempcindex elseif ( @colorwarp == 39 ) ftemp = cos( @cpower*tempcindex ) / tempcindex elseif ( @colorwarp == 40 ) ftemp = sin( @cpower*tempcindex ) * cos( tempcindex ) elseif ( @colorwarp == 41 ) ftemp = sin( tempcindex^(@cpower*2 )) elseif ( @colorwarp == 42 ) ftemp = exp( -@cpower/tempcindex ) elseif ( @colorwarp == 43 ) ftemp = tempcindex * exp( @cpower*tempcindex ) elseif ( @colorwarp == 44 ) ftemp = tempcindex * exp( -@cpower*tempcindex ) elseif ( @colorwarp == 45 ) ftemp = tempcindex * exp( @cpower/tempcindex ) elseif ( @colorwarp == 46 ) ftemp = tempcindex * exp( -@cpower/tempcindex ) elseif ( @colorwarp == 47 ) ftemp = tempcindex * tempcindex * tempcindex elseif ( @colorwarp == 48 ) ftemp = 1 / ( tempcindex * tempcindex * tempcindex ) elseif ( @colorwarp == 49 ) ftemp = atan( @cpower / tempcindex ) elseif ( @colorwarp == 50 ) ftemp = acos( @cpower / tempcindex ) elseif ( @colorwarp == 51 ) ftemp = asin( @cpower / tempcindex ) elseif ( @colorwarp == 52 ) ftemp = tan( @cpower*tempcindex ) / tempcindex elseif ( @colorwarp == 53 ) ftemp = cotan( @cpower*tempcindex ) / tempcindex elseif ( @colorwarp == 54 ) ftemp = 1 / ( tempcindex * cos( @cpower*tempcindex )) elseif ( @colorwarp == 55 ) ftemp = 1 / ( tempcindex * sin( @cpower*tempcindex )) elseif ( @colorwarp == 56 ) ftemp = tempcindex * sin( @cpower*tempcindex ) elseif ( @colorwarp == 57 ) ftemp = tempcindex * cos( @cpower*tempcindex ) elseif ( @colorwarp == 58 ) ftemp = tempcindex * tan( @cpower*tempcindex ) elseif ( @colorwarp == 59 ) ftemp = tempcindex * cotan( @cpower*tempcindex ) elseif ( @colorwarp == 60 ) ftemp = tempcindex/cos( @cpower*tempcindex ) elseif ( @colorwarp == 61 ) ftemp = tempcindex/sin( @cpower*tempcindex ) elseif ( @colorwarp == 62 ) ftemp = sin( @cpower/tempcindex ) elseif ( @colorwarp == 63 ) ftemp = cos( @cpower/tempcindex ) elseif ( @colorwarp == 64 ) ftemp = tan( @cpower/tempcindex ) elseif ( @colorwarp == 65 ) ftemp = cotan( @cpower/tempcindex ) elseif ( @colorwarp == 66 ) ftemp = 1/cos( @cpower/tempcindex ) elseif ( @colorwarp == 67 ) ftemp = 1/sin( @cpower/tempcindex ) elseif ( @colorwarp == 68 ) ftemp = cotanh( @cpower*tempcindex ) elseif ( @colorwarp == 69 ) ftemp = 1/cosh( @cpower*tempcindex ) elseif ( @colorwarp == 70 ) ftemp = 1/sinh( @cpower*tempcindex ) elseif ( @colorwarp == 71 ) ftemp = atanh( @cpower/tempcindex ) elseif ( @colorwarp == 72 ) ftemp = acosh( @cpower/tempcindex ) elseif ( @colorwarp == 73 ) ftemp = asinh( @cpower/tempcindex ) elseif @colorwarp == 74 ftemp = tempcindex^@cpower elseif @colorwarp == 75 ftemp = sinh(@cpower*tempcindex) ftemp = ftemp * ftemp elseif @colorwarp == 76 ftemp = cosh( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif @colorwarp == 77 ftemp = tanh(@cpower*tempcindex) ftemp = ftemp * ftemp elseif @colorwarp == 78 ftemp = cotanh( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif @colorwarp == 79 ftemp = 1/cosh(@cpower*tempcindex) ftemp = ftemp * ftemp elseif @colorwarp == 80 ftemp = 1 / sinh( @cpower*tempcindex ) ftemp = ftemp * ftemp elseif @colorwarp == 81 ftemp = sinh(@cpower/tempcindex) elseif @colorwarp == 82 ftemp = cosh(@cpower/tempcindex) elseif @colorwarp == 83 ftemp = tanh(@cpower/tempcindex) elseif @colorwarp == 84 ftemp = cotanh(@cpower/tempcindex) elseif @colorwarp == 85 ftemp = 1/cosh(@cpower/tempcindex) elseif @colorwarp == 86 ftemp = 1/sinh(@cpower/tempcindex) elseif @colorwarp == 87 ftemp = sin( @cpower*tempcindex ) * tan(tempcindex) elseif @colorwarp == 88 ftemp = sinh(@cpower*tempcindex) * tanh(tempcindex) elseif @colorwarp == 89 ftemp = sinh(@cpower*tempcindex) * cosh(tempcindex) elseif @colorwarp == 90 ftemp = sinh(@cpower*tempcindex), ftemp2 = cosh(tempcindex) ftemp = ftemp*ftemp*ftemp2*ftemp2 elseif @colorwarp == 91 ftemp = sin(@cpower*tempcindex), ftemp2 = cos(tempcindex) ftemp = ftemp*ftemp*ftemp2*ftemp2 elseif @colorwarp == 92 ftemp = 1/tempcindex ftemp = sin(@cpower*ftemp)*cos(ftemp) elseif @colorwarp == 93 ftemp = sin( @cpower/tempcindex ) ftemp = ftemp*ftemp elseif @colorwarp == 94 ftemp = sin(@cpower*tempcindex) * cos(1/tempcindex) elseif @colorwarp == 95 ftemp = sin(tempcindex) * sin(@cpower/tempcindex) elseif @colorwarp == 96 ftemp = log(1+@cpower*tempcindex) ftemp = ftemp*ftemp elseif @colorwarp == 97 ftemp = sin(tempcindex) * sin(2*tempcindex) elseif @colorwarp == 98 ftemp = exp(2*tempcindex) elseif @colorwarp == 99 ftemp = exp(-2*tempcindex) elseif @colorwarp == 100 ftemp = 1/tempcindex ftemp = sinh(@cpower*ftemp)*cosh(ftemp) elseif @colorwarp == 101 ftemp = sinh( @cpower/tempcindex ) ftemp = ftemp*ftemp elseif @colorwarp == 102 ftemp = sinh(@cpower*tempcindex) * cosh(1/tempcindex) elseif @colorwarp == 103 ftemp = sinh(tempcindex) * sinh(@cpower/tempcindex) elseif @colorwarp == 104 ftemp = sin(@cpower*tempcindex) * sinh(tempcindex) elseif @colorwarp == 105 ftemp = sin(tempcindex) * cosh(@cpower*tempcindex) elseif @colorwarp == 106 ftemp = sin(@cpower*tempcindex), ftemp2 = sinh(tempcindex) ftemp = ftemp*ftemp*ftemp2*ftemp2 elseif @colorwarp == 107 ftemp = sin(@cpower*tempcindex)*exp(tempcindex) elseif @colorwarp == 108 ftemp = cos(@cpower*tempcindex)*exp(tempcindex) elseif @colorwarp == 109 ftemp = sinh(tempcindex)*exp(@cpower*tempcindex) elseif @colorwarp == 110 ftemp = cosh(@cpower*tempcindex)*exp(tempcindex) elseif @colorwarp == 111 ftemp = sin(@cpower*tempcindex)*log(1+tempcindex) elseif @colorwarp == 112 ftemp = cos(tempcindex)*log(1+@cpower*tempcindex) elseif @colorwarp == 113 ftemp = sinh(@cpower*tempcindex)*log(1+tempcindex) elseif @colorwarp == 114 ftemp = cosh(tempcindex)*log(1+@cpower*tempcindex) elseif @colorwarp == 115 ftemp = exp(@cpower*(tempcindex^2)) elseif @colorwarp == 116 ftemp = exp(@cpower/(tempcindex^2)) elseif @colorwarp == 117 ftemp = abs(@cpower*tempcindex) elseif @colorwarp == 118 ftemp = round(@cpower*tempcindex) elseif @colorwarp == 119 ftemp = trunc(@cpower*tempcindex) elseif @colorwarp == 120 ftemp = ceil(@cpower*tempcindex) elseif @colorwarp == 121 ftemp = floor(@cpower*tempcindex) elseif @colorwarp == 122 ftemp = tempcindex/log(1+@cpower*tempcindex) elseif @colorwarp == 123 ftemp = log(1+@cpower*tempcindex)/tempcindex elseif @colorwarp == 124 ftemp = exp(@cpower*tempcindex)/tempcindex elseif @colorwarp == 125 ftemp = exp(@cpower/tempcindex)/tempcindex elseif @colorwarp == 126 ftemp = exp(@cpower*(tempcindex^2))/tempcindex elseif @colorwarp == 127 ftemp = exp(@cpower/(tempcindex^2))/tempcindex elseif @colorwarp == 128 ftemp = tempcindex * exp(@cpower*(tempcindex^2)) elseif @colorwarp == 129 ftemp = tempcindex * exp(@cpower/(tempcindex^2)) elseif @colorwarp == 130 ftemp = exp(-(@cpower*(tempcindex^2))) elseif @colorwarp == 131 ftemp = exp(-@cpower/(tempcindex^2)) elseif @colorwarp == 132 ftemp = exp(-@cpower*(tempcindex^2))/tempcindex elseif @colorwarp == 133 ftemp = exp(-@cpower/(tempcindex^2))/tempcindex elseif @colorwarp == 134 ftemp = tempcindex * exp(-@cpower*(tempcindex^2)) else ; @colorwarp == 135 ftemp = tempcindex * exp(-@cpower/(tempcindex^2)) endif ; tempcindexwarp #index = @tiaweight*abs(ftemp) + fbmadjust default: title = "TIA with fBm" heading caption = "Triangle Inequality Average Settings" text = "Use a high bailout value in the fractal formula" expanded = FALSE endheading param apower caption = "Average Exponent" default = 1.0 hint = "This skews the values averaged by raising them to \ this power. Use 1.0 for the classic coloring." endparam param aflavor caption = "Average Flavor" default = 0 enum = "normal" "reversed" hint = "Controls whether values are reversed before being \ raised to a power. Has no effect if Average Exponent \ is 1.0." endparam param power caption = "Exponent" default = 2.0 hint = "This should be set to match the exponent of the \ formula you are using. For Mandelbrot, this is 2." endparam param bailout caption = "Bailout" default = 1e20 min = 1 hint = "This should be set to match the bailout value in \ the Formula tab. Use a very high bailout!" endparam param tiaweight caption = "TIA Weight" default = 1.0 hint = "This parameter sets how much the TIA coloring is mixed into \ the fBm component" visible = @fBm endparam param @colorwarp caption = "TIA 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 TIA color index value can be warped by this function; default is \ 'c' (no change in color index). (A transfer function) The fBm adjustment \ occurs after this function is applied to the TIA coloring. To apply a \ similar warping to the fBm adjustment, use param 'fBm Warp Factor'" endparam param cpower caption = "Color Parameter" default = 1.0 hint = "Color index exponent if param 'TIA Warp Factor' is set to 'c^power'; \ otherwise, this is a general parameter that usually affects the 'TIA \ Warp Factor' (for example, in the sin/cos options, it sets the frequency)" endparam heading caption = "fBm/Color Settings" expanded = TRUE endheading param fBm caption = "Enable fBm?" default = FALSE hint = "Adds fBm distortion to coloring; overall amount of turbulence \ is set by parameter 'fBm Amount'" endparam param fbmamount caption = "fBm Amount" default = 1.0 hint = "If fBm is enabled, this parameter determines the overall fBm perturbation \ of the color palette index" visible = @fBm endparam param bscale caption = "fBm Scale" default = 1.0 hint = "The overall scale of the fBm turbulence" visible = @fBm endparam param fbminit caption = "fBm Initialization" enum = "min z" "first z" "second z" "third z" "fourth z" "last z" \ "penult z" "antepenult z" "TIA" "pixel" "min* z" ; "blend1" "blend2" \ ; "blend3" "blend4" "blend5" "blend6" "blend7" "blend8" \ ; "blend9" default = 0 hint = "This setting defines the input to the fBm algorithm. Option \ 'min* z' skips the first iteration before capturing the minimum z value" visible = @fBm endparam ; param fbmblendmode1 ; caption = "How to Blend?" ; enum = "*" "+" "-" "/" "^" "--" "//" "^^" ; default = 0 ; hint = "If one of the 'blend' initializations is chosen for param \ ; 'fBm Initialization', then this determines how the init values \ ; are mixed" ; visible = @fBm && (@fbminit > 9) ; endparam ; param fbmblendmode2 ; caption = "How to Blend, Part 2?" ; enum = "normal" "negate" "flip" "conj" "flip-conj" ; default = 0 ; hint = "If one of the 'blend' initializations is chosen for param \ ; 'fBm Initialization', then this determines how the init values \ ; are mixed" ; visible = @fBm && (@fbminit > 9) ; endparam param fbmtransform caption = "Apply Transform?" default = FALSE hint = "Applies tranformation to fBm initialization algorithm" visible = @fBm endparam param fbmtransformfunc caption = "Transform Function" enum = "none" "circle" "cardioid" "lissajous" "hypocycloid" "parabola" default = 0 hint = "If parameter 'Apply Transform' is enabled, this param \ determines which tranformation is applied" visible = @fBm && @fbmtransform endparam param fbmcradius caption = "Circle Radius" default = 1.0 hint = "If parameter 'Transform Function' is set to 'circle', this param \ determines the circle radius" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 1) endparam param fbmcfrequency caption = "Circle Frequency" default = 1.0 hint = "If parameter 'Transform Function' is set to 'circle', this is an extra param \ that modifies the circle function" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 1) endparam param fbmcardradius caption = "Cardioid Size" default = 1.0 hint = "If parameter 'Transform Function' is set to 'cardioid', this param \ determines the cardioid size" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 2) endparam param fbmcardfreq caption = "Cardioid Frequency" default = 1.0 hint = "If parameter 'Transform Function' is set to 'cardioid', this is an extra param \ that modifies the cardioid function" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 2) endparam param fbmlissaamp1 caption = "1st Lissajous Amplitude" default = 1.0 hint = "If parameter 'Transform Function' is set to 'lissajous', this param \ sets the amplitude of the first lissajous function" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 3) endparam param fbmlissafreq1 caption = "1st Lissajous Frequency" default = 2.0 hint = "If parameter 'Transform Function' is set to 'lissajous', this param \ sets the frequency of the first lissajous function" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 3) endparam param fbmlissaphase1 caption = "1st Lissajous Phase" default = 0.0 hint = "If parameter 'Transform Function' is set to 'lissajous', this param \ sets the phase of the first lissajous function" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 3) endparam param fbmlissaamp2 caption = "2nd Lissajous Amplitude" default = 1.0 hint = "If parameter 'Transform Function' is set to 'lissajous', this param \ sets the amplitude of the second lissajous function" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 3) endparam param fbmlissafreq2 caption = "2nd Lissajous Frequency" default = 2.0 hint = "If parameter 'Transform Function' is set to 'lissajous', this param \ sets the frequency of the second lissajous function" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 3) endparam param fbmlissaphase2 caption = "2nd Lissajous Phase" default = 1.5707963267948966192313216916398 hint = "If parameter 'Transform Function' is set to 'lissajous', this param \ sets the phase of the second lissajous function" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 3) endparam param fbmhypocyc1 caption = "1st Hypocycloid Constant" default = 8.0 hint = "If parameter 'Transform Function' is set to 'hypocycloid', this param \ sets the first of the two constants defining the hypocycloid curve. \ Try (c1 - c2) / c2 = an integer" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 4) endparam param fbmhypocyc2 caption = "2nd Hypocycloid Constant" default = 2.0 hint = "If parameter 'Transform Function' is set to 'hypocycloid', this param \ sets the second of the two constants defining the hypocycloid curve. \ Try (c1 - c2) / c2 = an integer" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 4) endparam param fbmparabscale caption = "Parabola Scale" default = -2.0 hint = "If parameter 'Transform Function' is set to 'parabola', this param \ sets the overall scale of the curve" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 5) endparam param fbmparaboffset caption = "Parabola Offset" default = 1.0 hint = "If parameter 'Transform Function' is set to 'parabola', this extra param \ can be used to distort the curve" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 5) endparam param fbmparabfreq caption = "Parabola Frequency" default = 1.0 hint = "If parameter 'Transform Function' is set to 'parabola', this extra param \ can be used to further distort the curve" visible = @fBm && @fbmtransform && (@fbmtransformfunc == 5) endparam param fbmhybrid caption = "Hybrid Initialization?" default = FALSE hint = "Adjusts initialization value of the fBm algorithm \ by mixing in the #pixel value, after the transform function, \ if any, is applied" visible = @fBm endparam param fbmhybridtype caption = "Hybrid Type" enum = "*" "+" "-" "/" "^" "--" "//" "^^" "average" "geom mean" default = 0 hint = "If 'Hybrid Initialization' is enabled, then this param \ determines how the pixel value is blended in" visible = @fBm && @fbmhybrid endparam param fbmhybridweight caption = "Hybrid Weight" default = 1.0 hint = "If parameter 'Hybrid Initialization' is enabled, this param \ determines how much of #pixel is blended in" visible = @fBm && @fbmhybrid endparam param fbmbias caption = "Bias fBm?" default = FALSE hint = "Enable multiplier of fBm initialization" visible = @fBm endparam param fbmbiasamount caption = "Bias Amount" default = (1.0,0) hint = "Value of fBm Bias Multiplier" visible = @fBm && @fbmbias endparam param bangle caption = "fBm Rotation" default = 0.0 hint = "Angular parameter for fBm noise" visible = @fBm endparam param bstep caption = "fBm Stepsize" default = 0.5 hint = "Scale step size for fBm noise iterations" visible = @fBm endparam param banglestep caption = "fBm Rotation Step" default = 53.0 hint = "The angle in degrees for noise function rotation after \ each fBm iteration; used if fBm is enabled" visible = @fBm endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the fBm noise function" visible = @fBm endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used if param fBm is enabled \ for fBm randomization" visible = @fBm endparam param bbfreq caption = "fBm Frequency" default = 1.0 hint = "Frequency multiplier for fBm noise" visible = @fBm endparam param boffset caption = "fBm Offset" default = (0.0,0.0) hint = "Offset added to fBm noise initializer" visible = @fBm endparam param bsumoffset caption = "fBm Sum Offset" default = 0.0 hint = "This term adjusts the cumulative fBm sum" visible = @fBm endparam param bpostscale caption = "fBm Postscale" default = 1.0 hint = "This factor scales the cumulative fBm sum after the \ 'fBm Warp Factor' and 'fBm Sum Offset' adjustments" visible = @fBm endparam param fbmint1 caption = "fBm Graniness 1" default = 256 hint = "Distorts the traditional fBm algorithm" visible = @fBm endparam param fbmint2 caption = "fBm Graniness 2" default = 65536 hint = "Distorts the traditional fBm algorithm" visible = @fBm endparam param fbmint3 caption = "fBm Graniness 3" default = 512 hint = "Distorts the traditional fBm algorithm" visible = @fBm endparam param @fbmfunc caption = "fBm Warp Factor" enum = "none" "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)^n" "cos(c)^n" "tan(c)^n" "cot(c)" "sec(c)" \ "csc(c)" "cot(c)^n" "sec(c)^n" "csc(c)^n" "c^c^c" "1/c^c^c" "log(-c)" \ "1/log(c)" "clog(c)" "sin(c)/c" "cos(c)/c" "sin(c)*cos(n*c)" "sin(c^n)" \ "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)^n" "cosh(c)^n" "tanh(c)^n" "cotanh(c)^n" \ "sech(c)^n" "cosech(c)^n" "sinh(1/c)" "cosh(1/c)" "tanh(1/c)" \ "cotanh(1/c)" "sech(1/c)" "cosech(1/c)" "sin(c)tan(n*c)" "sinh(c)tanh(n*c)" \ "sinh(c)cosh(n*c)" "sinh(c)^m*cosh(c)^n" "sin(c)^m*cos(c)^n" \ "sin(1/c)*cos(n/c)" "sin(1/c)^n" "sin(c)cos(n/c)" "sin(c)sin(n/c)" \ "log(c)^n" "sin(c)sin(n*c)" "e^2c" "e^-2c" "sinh(1/c)cosh(n/c)" \ "sinh(1/c)^n" "sinh(c)cosh(n/c)" "sinh(c)sinh(n/c)" "sin(c)sinh(n*c)" \ "sin(c)cosh(n*c)" "sin(c)^m*sinh(c)^n" "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^n)" "e^(1/(c^n))" "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^n))/c" "(e^(1/(c^n))/c" "c*e^(c^n)" "c*e^(1/(c^n))" \ "e^(-c^n)" "e^(-1/(c^n))" "(e^(-c^n))/c" "(e^(-1/(c^n))/c" \ "c*e^(-c^n)" "c*e^(1/(-c^n))" "c%n" default = 0 hint = "This function modifies the color adjustment produced by the fBm noise algorithm. \ It does not affect the TIA coloring component; use param 'TIA Warp Factor' \ for that" visible = @fBm endparam param funcpower caption = "fBm Warp Power" default = 0.333333333333333 hint = "If param 'fBm Warp Factor' is set to 'c^power', then this is the power" visible = (@fbmfunc == "c^power") && @fBm endparam param funcprescale caption = "fBm Warp Prescale" default = 1.0 hint = "This factor scales the argument to the 'fBm Warp Factor' function" visible = @fBm && @fbmfunc != "none" endparam param funcparam1 caption = "fBm Warp Param1" default = 1.0 hint = "If the 'fBm Warp Factor' function uses extra parameters, then \ this number is the first of those" visible = @fBm && (@fbmfunc > 3) endparam param funcparam2 caption = "fBm Warp Param2" default = 2.0 hint = "If the 'fBm Warp Factor' function uses extra parameters, then \ this number is the second of those" visible = @fBm && ( (@fbmfunc == 20) || (@fbmfunc == 24) || \ (@fbmfunc == 25) || (@fbmfunc == 26) || (@fbmfunc == 30) || \ (@fbmfunc == 31) || (@fbmfunc == 32) || (@fbmfunc == 33) || \ (@fbmfunc == 34) || (@fbmfunc == 40) || (@fbmfunc == 75) || \ (@fbmfunc == 76) || (@fbmfunc == 77) || (@fbmfunc == 78) || \ (@fbmfunc == 79) || (@fbmfunc == 80) || (@fbmfunc == 87) || \ (@fbmfunc == 88) || (@fbmfunc == 89) || (@fbmfunc == 90) || \ (@fbmfunc == 91) || (@fbmfunc == 92) || (@fbmfunc == 93) || \ (@fbmfunc == 94) || (@fbmfunc == 95) || (@fbmfunc == 97) || \ (@fbmfunc == 100) || (@fbmfunc == 101) || (@fbmfunc == 102) || \ (@fbmfunc == 103) || (@fbmfunc == 104) || (@fbmfunc == 105) || \ (@fbmfunc == 106) || (@fbmfunc == 107) || (@fbmfunc == 108) || \ (@fbmfunc == 109) || (@fbmfunc == 110) || (@fbmfunc == 111) || \ (@fbmfunc == 112) || (@fbmfunc == 113) || (@fbmfunc == 114) || \ (@fbmfunc == 115) || (@fbmfunc == 116) || (@fbmfunc == 126) || \ (@fbmfunc == 127) || (@fbmfunc == 128) || (@fbmfunc == 129) || \ (@fbmfunc == 130) || (@fbmfunc == 131) || (@fbmfunc == 132) || \ (@fbmfunc == 133) || (@fbmfunc == 134) || (@fbmfunc == 135) ) endparam } jam-trapestry { ; jam ; V.5.2 February, 2006 --- added new oscilator options: result reciprocals, ; new osc functions, new osc operator combinations; added new trap functions; ; new trap flavors; new trap combination mode ('alternative'). ; V.5.1 February, 2006 --- added the new parameter group, 'Bias Settings', and ; relocated a few old parameters. Added screwiness modes based on magnitude. ; V.5 January, 2006 --- added new modes 325-370 to all history types, using three ; generations of points to determine trap; added many new 'Trap Flavors', such as ; crosssum and manhattan metric for distance; added option to use the reciprocal angle ; rather than the angle of #z as the input to the trap function (in the 'Modifiers' ; parameter block); added reciprocal Real and reciprocal Imaginary options to the ; screwiness functions; added option to partially blend in the screwiness and/or weirdness ; modifiers instead of using them full strength; added several new trap functions and ; one new modulator function; added two new gradient offset options and a gradient stretch/ ; contract option (in the 'Color Settings' param block); tweaked user interface: reordered ; parameter blocks, updated hints and changed the default settings of the 'Color By' parameter ; and texture functions 2-4. ; The new 'Color By?' default, 'flavor value', works much better (i.e., more "distance-like" ; results) for many of the new 'Trap Flavor' values. ; V. 4.1 August, 2005 --- added additional functions, options to oscillators; corrected ; some errors in the fBm hints; added new trap combination modes (quotient 4-14, ; exponential 3-14). ; V.4 August, 2005 --- Tweaked interface for UF4; added new trap wavy mode; ; added new trap flavors; new trap functions; 4th optional constant for some trap functions; ; blending of trap histories; corrected rare bug in z history logic. ; V.3 released 24 January, 2005 --- added many new trap combo modes, added new screwiness ; types, added screwiness negate operator, added weirdness and weirdness types, added a ; new history index selector to all history modes (original, alternative, and trap), ; added an alternative trap history mode, added mix&match selectors to provide more ; flexibility for which previous generations are used in all history types/modes, ; added a new (second) Z operator modifier, tweaked the mask options and texture functions, ; redesigned the history user interface, and added a few new trap functions. ; V.2 released 30 August, 2004 --- added 'Color By' modes mod iter, discrete iter, ; smooth iter, modulus angle, count (meant to be used with 'Trap What' = 'count'); ; added 'Trap What' mode 'count'; added new trap combo modes (splice 7-12); added ; Mask A and Mask B modes 'mod iter' and 'modulus angle'; added ; History modes 'alternative' and 'both'; added Trap History and Trap Operator; ; added post-scaling options to real and imag modulator functions; added alternative ; log() and log(log)) functions [denoted by 'log() B' and 'log(log()) B']. ; Version 1 begun 18 May, 2003; finished 3 June, 2003 ; 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). ; For my own convenience: ; pi = 3.1415926535897932384626433832795 ; e = 2.7182818284590452353602874713527 ; phi = 1.6180339887498948482045868343656 ; sqrt(2) = 1.4142135623730950488016887242097 ; sqrt(3) = 1.7320508075688772935274463415059 ; sqrt(pi) = 1.7724538509055 ; gamma = 0.5772156649 ; omega = 0.5671432904097838729999686622103 ; zeta(2) = 1.6449340668482 global: ; Old variables moved to global ; Common constants float twopi = 2.0 * #pi float degconversion = twopi/360 float onehalf = 1.0/2 float onethird = 1.0/3 float onefourth = 1.0/4 ; blending variables float rfbcomp = 1-@rfblend, float ifbcomp = 1-@ifblend float rbbcomp = 1-@rbblend, float ibbcomp = 1-@ibblend float trapbcomp = 1-@trapblend, float initbcomp = 1-@initblend float zhist1comp = 1-@zhist1fraction, float zhist2comp = 1-@zhist2fraction float thist1comp = 1-@thist1fraction, float thist2comp = 1-@thist2fraction float weirdcomplement = 1-@weirdfraction float screwycomplement = 1-@screwyfraction 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 tex2powers[4] ; exponent for the 4 texture functions if any are set to 'x^power' 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,4] ; optional function parameters; function 1-4, constants 1, 2, 3, and 4 bool oscreciprocal[4,4] ; FALSE = use regular angular argument, TRUE = use reciprocal angle for that given operator bool oscsetrecip[4] ; FALSE = use oscillator set result as is, TRUE = take reciprocal of osc set result bool oscpower[4,4] ; FALSE = do not raise result to a power before combining with other oscillators float oscexponent[4,4] ; holds the relevant exponent if any of the oscpower[] values are TRUE bool oscselector[4,4] ; FALSE = cosine oscillator, TRUE = sine or other function int oscfunction[4,4] ; selects either sine, tangent, or exponential function for individual oscillators int oscoperator[4,4] ; selects how each oscillator is combined with the previous oscillators 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 const[gtempindex1,3] = 0.0 oscsetrecip[gtempindex1] = FALSE absoluteangle[gtempindex1] = FALSE absoluteresult[gtempindex1] = FALSE while gtempindex2 < 4 coeff[gtempindex1, gtempindex2, 0] = 0.0 coeff[gtempindex1, gtempindex2, 1] = 0.0 oscreciprocal[gtempindex1, gtempindex2] = FALSE oscpower[gtempindex1, gtempindex2] = FALSE oscexponent[gtempindex1, gtempindex2] = 0.0 oscselector[gtempindex1, gtempindex2] = FALSE oscfunction[gtempindex1, gtempindex2] = 0 oscoperator[gtempindex1, gtempindex2] = 0 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 const[0,3] = @const4f1 ; optional fourth parameter for first function const[1,3] = @const4f2 ; optional fourth 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 oscreciprocal[0,0] = @oscrecip11 oscreciprocal[0,1] = @oscrecip12 oscreciprocal[0,2] = @oscrecip13 oscreciprocal[0,3] = @oscrecip14 oscreciprocal[1,0] = @oscrecip21 oscreciprocal[1,1] = @oscrecip22 oscreciprocal[1,2] = @oscrecip23 oscreciprocal[1,3] = @oscrecip24 oscsetrecip[0] = @oscsetreciprocal1 oscsetrecip[1] = @oscsetreciprocal2 oscpower[0,0] = @oscpower11 oscpower[0,1] = @oscpower12 oscpower[0,2] = @oscpower13 oscpower[0,3] = @oscpower14 oscpower[1,0] = @oscpower21 oscpower[1,1] = @oscpower22 oscpower[1,2] = @oscpower23 oscpower[1,3] = @oscpower24 oscexponent[0,0] = @oscexponent11 oscexponent[0,1] = @oscexponent12 oscexponent[0,2] = @oscexponent13 oscexponent[0,3] = @oscexponent14 oscexponent[1,0] = @oscexponent21 oscexponent[1,1] = @oscexponent22 oscexponent[1,2] = @oscexponent23 oscexponent[1,3] = @oscexponent24 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 oscfunction[0,0] = @oscfunc11 oscfunction[0,1] = @oscfunc12 oscfunction[0,2] = @oscfunc13 oscfunction[0,3] = @oscfunc14 oscfunction[1,0] = @oscfunc21 oscfunction[1,1] = @oscfunc22 oscfunction[1,2] = @oscfunc23 oscfunction[1,3] = @oscfunc24 oscoperator[0,0] = @oscoperation11 oscoperator[0,1] = @oscoperation12 oscoperator[0,2] = @oscoperation13 oscoperator[0,3] = @oscoperation14 oscoperator[1,0] = @oscoperation21 oscoperator[1,1] = @oscoperation22 oscoperator[1,2] = @oscoperation23 oscoperator[1,3] = @oscoperation24 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 const[0,3] = @const4f1 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 oscreciprocal[1,0] = @oscrecip11 oscreciprocal[1,1] = @oscrecip12 oscreciprocal[1,2] = @oscrecip13 oscreciprocal[1,3] = @oscrecip14 oscsetrecip[1] = @oscsetreciprocal1 oscpower[1,0] = @oscpower11 oscpower[1,1] = @oscpower12 oscpower[1,2] = @oscpower13 oscpower[1,3] = @oscpower14 oscexponent[1,0] = @oscexponent11 oscexponent[1,1] = @oscexponent12 oscexponent[1,2] = @oscexponent13 oscexponent[1,3] = @oscexponent14 oscselector[1,0] = @osc11sin oscselector[1,1] = @osc12sin oscselector[1,2] = @osc13sin oscselector[1,3] = @osc14sin oscfunction[1,0] = @oscfunc11 oscfunction[1,1] = @oscfunc12 oscfunction[1,2] = @oscfunc13 oscfunction[1,3] = @oscfunc14 oscoperator[1,0] = @oscoperation11 oscoperator[1,1] = @oscoperation12 oscoperator[1,2] = @oscoperation13 oscoperator[1,3] = @oscoperation14 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) const[0,3] = @const4f1 ; optional fourth parameter for first function (x-ccord 1) const[1,3] = @const4f2 ; optional fourth parameter for second function (y-ccord 1) const[2,3] = @const4f3 ; optional fourth parameter for third function (x-ccord 2) const[3,3] = @const4f4 ; optional fourth 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 oscreciprocal[0,0] = @oscrecip11 oscreciprocal[0,1] = @oscrecip12 oscreciprocal[0,2] = @oscrecip13 oscreciprocal[0,3] = @oscrecip14 oscreciprocal[1,0] = @oscrecip21 oscreciprocal[1,1] = @oscrecip22 oscreciprocal[1,2] = @oscrecip23 oscreciprocal[1,3] = @oscrecip24 oscreciprocal[2,0] = @oscrecip31 oscreciprocal[2,1] = @oscrecip32 oscreciprocal[2,2] = @oscrecip33 oscreciprocal[2,3] = @oscrecip34 oscreciprocal[3,0] = @oscrecip41 oscreciprocal[3,1] = @oscrecip42 oscreciprocal[3,2] = @oscrecip43 oscreciprocal[3,3] = @oscrecip44 oscsetrecip[0] = @oscsetreciprocal1 oscsetrecip[1] = @oscsetreciprocal2 oscsetrecip[2] = @oscsetreciprocal3 oscsetrecip[3] = @oscsetreciprocal4 oscpower[0,0] = @oscpower11 oscpower[0,1] = @oscpower12 oscpower[0,2] = @oscpower13 oscpower[0,3] = @oscpower14 oscpower[1,0] = @oscpower21 oscpower[1,1] = @oscpower22 oscpower[1,2] = @oscpower23 oscpower[1,3] = @oscpower24 oscpower[2,0] = @oscpower31 oscpower[2,1] = @oscpower32 oscpower[2,2] = @oscpower33 oscpower[2,3] = @oscpower34 oscpower[3,0] = @oscpower41 oscpower[3,1] = @oscpower42 oscpower[3,2] = @oscpower43 oscpower[3,3] = @oscpower44 oscexponent[0,0] = @oscexponent11 oscexponent[0,1] = @oscexponent12 oscexponent[0,2] = @oscexponent13 oscexponent[0,3] = @oscexponent14 oscexponent[1,0] = @oscexponent21 oscexponent[1,1] = @oscexponent22 oscexponent[1,2] = @oscexponent23 oscexponent[1,3] = @oscexponent24 oscexponent[2,0] = @oscexponent31 oscexponent[2,1] = @oscexponent32 oscexponent[2,2] = @oscexponent33 oscexponent[2,3] = @oscexponent34 oscexponent[3,0] = @oscexponent41 oscexponent[3,1] = @oscexponent42 oscexponent[3,2] = @oscexponent43 oscexponent[3,3] = @oscexponent44 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 oscfunction[0,0] = @oscfunc11 oscfunction[0,1] = @oscfunc12 oscfunction[0,2] = @oscfunc13 oscfunction[0,3] = @oscfunc14 oscfunction[1,0] = @oscfunc21 oscfunction[1,1] = @oscfunc22 oscfunction[1,2] = @oscfunc23 oscfunction[1,3] = @oscfunc24 oscfunction[2,0] = @oscfunc31 oscfunction[2,1] = @oscfunc32 oscfunction[2,2] = @oscfunc33 oscfunction[2,3] = @oscfunc34 oscfunction[3,0] = @oscfunc41 oscfunction[3,1] = @oscfunc42 oscfunction[3,2] = @oscfunc43 oscfunction[3,3] = @oscfunc44 oscoperator[0,0] = @oscoperation11 oscoperator[0,1] = @oscoperation12 oscoperator[0,2] = @oscoperation13 oscoperator[0,3] = @oscoperation14 oscoperator[1,0] = @oscoperation21 oscoperator[1,1] = @oscoperation22 oscoperator[1,2] = @oscoperation23 oscoperator[1,3] = @oscoperation24 oscoperator[2,0] = @oscoperation31 oscoperator[2,1] = @oscoperation32 oscoperator[2,2] = @oscoperation33 oscoperator[2,3] = @oscoperation34 oscoperator[3,0] = @oscoperation41 oscoperator[3,1] = @oscoperation42 oscoperator[3,2] = @oscoperation43 oscoperator[3,3] = @oscoperation44 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 const[0,3] = @const4f1 const[1,3] = @const4f2 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 oscreciprocal[2,0] = @oscrecip11 oscreciprocal[2,1] = @oscrecip12 oscreciprocal[2,2] = @oscrecip13 oscreciprocal[2,3] = @oscrecip14 oscreciprocal[3,0] = @oscrecip21 oscreciprocal[3,1] = @oscrecip22 oscreciprocal[3,2] = @oscrecip23 oscreciprocal[3,3] = @oscrecip24 oscsetrecip[2] = @oscsetreciprocal1 oscsetrecip[3] = @oscsetreciprocal2 oscpower[2,0] = @oscpower11 oscpower[2,1] = @oscpower12 oscpower[2,2] = @oscpower13 oscpower[2,3] = @oscpower14 oscpower[3,0] = @oscpower21 oscpower[3,1] = @oscpower22 oscpower[3,2] = @oscpower23 oscpower[3,3] = @oscpower24 oscexponent[2,0] = @oscexponent11 oscexponent[2,1] = @oscexponent12 oscexponent[2,2] = @oscexponent13 oscexponent[2,3] = @oscexponent14 oscexponent[3,0] = @oscexponent21 oscexponent[3,1] = @oscexponent22 oscexponent[3,2] = @oscexponent23 oscexponent[3,3] = @oscexponent24 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 oscfunction[2,0] = @oscfunc11 oscfunction[2,1] = @oscfunc12 oscfunction[2,2] = @oscfunc13 oscfunction[2,3] = @oscfunc14 oscfunction[3,0] = @oscfunc21 oscfunction[3,1] = @oscfunc22 oscfunction[3,2] = @oscfunc23 oscfunction[3,3] = @oscfunc24 oscoperator[2,0] = @oscoperation11 oscoperator[2,1] = @oscoperation12 oscoperator[2,2] = @oscoperation13 oscoperator[2,3] = @oscoperation14 oscoperator[3,0] = @oscoperation21 oscoperator[3,1] = @oscoperation22 oscoperator[3,2] = @oscoperation23 oscoperator[3,3] = @oscoperation24 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 const[0,3] = @const4f1 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 const[1,3] = @const4f2 const[2,3] = @const4f3 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 oscreciprocal[0,0] = @oscrecip11 oscreciprocal[0,1] = @oscrecip12 oscreciprocal[0,2] = @oscrecip13 oscreciprocal[0,3] = @oscrecip14 oscsetrecip[0] = @oscsetreciprocal1 oscpower[0,0] = @oscpower11 oscpower[0,1] = @oscpower12 oscpower[0,2] = @oscpower13 oscpower[0,3] = @oscpower14 oscexponent[0,0] = @oscexponent11 oscexponent[0,1] = @oscexponent12 oscexponent[0,2] = @oscexponent13 oscexponent[0,3] = @oscexponent14 oscselector[0,0] = @osc11sin oscselector[0,1] = @osc12sin oscselector[0,2] = @osc13sin oscselector[0,3] = @osc14sin oscfunction[0,0] = @oscfunc11 oscfunction[0,1] = @oscfunc12 oscfunction[0,2] = @oscfunc13 oscfunction[0,3] = @oscfunc14 oscoperator[0,0] = @oscoperation11 oscoperator[0,1] = @oscoperation12 oscoperator[0,2] = @oscoperation13 oscoperator[0,3] = @oscoperation14 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 oscreciprocal[1,0] = @oscrecip21 oscreciprocal[1,1] = @oscrecip22 oscreciprocal[1,2] = @oscrecip23 oscreciprocal[1,3] = @oscrecip24 oscreciprocal[2,0] = @oscrecip31 oscreciprocal[2,1] = @oscrecip32 oscreciprocal[2,2] = @oscrecip33 oscreciprocal[2,3] = @oscrecip34 oscsetrecip[1] = @oscsetreciprocal2 oscsetrecip[2] = @oscsetreciprocal3 oscpower[1,0] = @oscpower21 oscpower[1,1] = @oscpower22 oscpower[1,2] = @oscpower23 oscpower[1,3] = @oscpower24 oscpower[2,0] = @oscpower31 oscpower[2,1] = @oscpower32 oscpower[2,2] = @oscpower33 oscpower[2,3] = @oscpower34 oscexponent[1,0] = @oscexponent21 oscexponent[1,1] = @oscexponent22 oscexponent[1,2] = @oscexponent23 oscexponent[1,3] = @oscexponent24 oscexponent[2,0] = @oscexponent31 oscexponent[2,1] = @oscexponent32 oscexponent[2,2] = @oscexponent33 oscexponent[2,3] = @oscexponent34 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 oscfunction[1,0] = @oscfunc21 oscfunction[1,1] = @oscfunc22 oscfunction[1,2] = @oscfunc23 oscfunction[1,3] = @oscfunc24 oscfunction[2,0] = @oscfunc31 oscfunction[2,1] = @oscfunc32 oscfunction[2,2] = @oscfunc33 oscfunction[2,3] = @oscfunc34 oscoperator[1,0] = @oscoperation21 oscoperator[1,1] = @oscoperation22 oscoperator[1,2] = @oscoperation23 oscoperator[1,3] = @oscoperation24 oscoperator[2,0] = @oscoperation31 oscoperator[2,1] = @oscoperation32 oscoperator[2,2] = @oscoperation33 oscoperator[2,3] = @oscoperation34 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 const[0,3] = @const4f1 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 oscreciprocal[1,0] = @oscrecip11 oscreciprocal[1,1] = @oscrecip12 oscreciprocal[1,2] = @oscrecip13 oscreciprocal[1,3] = @oscrecip14 oscreciprocal[2,0] = @oscrecip21 oscreciprocal[2,1] = @oscrecip22 oscreciprocal[2,2] = @oscrecip23 oscreciprocal[2,3] = @oscrecip24 oscsetrecip[1] = @oscsetreciprocal1 oscsetrecip[2] = @oscsetreciprocal2 oscpower[1,0] = @oscpower11 oscpower[1,1] = @oscpower12 oscpower[1,2] = @oscpower13 oscpower[1,3] = @oscpower14 oscpower[2,0] = @oscpower21 oscpower[2,1] = @oscpower22 oscpower[2,2] = @oscpower23 oscpower[2,3] = @oscpower24 oscexponent[1,0] = @oscexponent11 oscexponent[1,1] = @oscexponent12 oscexponent[1,2] = @oscexponent13 oscexponent[1,3] = @oscexponent14 oscexponent[2,0] = @oscexponent21 oscexponent[2,1] = @oscexponent22 oscexponent[2,2] = @oscexponent23 oscexponent[2,3] = @oscexponent24 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 oscfunction[1,0] = @oscfunc11 oscfunction[1,1] = @oscfunc12 oscfunction[1,2] = @oscfunc13 oscfunction[1,3] = @oscfunc14 oscfunction[2,0] = @oscfunc21 oscfunction[2,1] = @oscfunc22 oscfunction[2,2] = @oscfunc23 oscfunction[2,3] = @oscfunc24 oscoperator[1,0] = @oscoperation11 oscoperator[1,1] = @oscoperation12 oscoperator[1,2] = @oscoperation13 oscoperator[1,3] = @oscoperation14 oscoperator[2,0] = @oscoperation21 oscoperator[2,1] = @oscoperation22 oscoperator[2,2] = @oscoperation23 oscoperator[2,3] = @oscoperation24 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 const[0,3] = @const4f1 const[1,3] = @const4f2 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 oscreciprocal[2,0] = @oscrecip11 oscreciprocal[2,1] = @oscrecip12 oscreciprocal[2,2] = @oscrecip13 oscreciprocal[2,3] = @oscrecip14 oscsetrecip[2] = @oscsetreciprocal1 oscpower[2,0] = @oscpower11 oscpower[2,1] = @oscpower12 oscpower[2,2] = @oscpower13 oscpower[2,3] = @oscpower14 oscexponent[2,0] = @oscexponent11 oscexponent[2,1] = @oscexponent12 oscexponent[2,2] = @oscexponent13 oscexponent[2,3] = @oscexponent14 oscselector[2,0] = @osc11sin oscselector[2,1] = @osc12sin oscselector[2,2] = @osc13sin oscselector[2,3] = @osc14sin oscfunction[2,0] = @oscfunc11 oscfunction[2,1] = @oscfunc12 oscfunction[2,2] = @oscfunc13 oscfunction[2,3] = @oscfunc14 oscoperator[2,0] = @oscoperation11 oscoperator[2,1] = @oscoperation12 oscoperator[2,2] = @oscoperation13 oscoperator[2,3] = @oscoperation14 numberoffuncs = 2 numberofoscsets = 1 endif ; @traptype endif ; @coordtype if @texture texfunc[0] = @texfunc1 tex2powers[0] = @tex2power texfunc[1] = @texfunc2 tex2powers[1] = @tex2power2 texfunc[2] = @texfunc3 tex2powers[2] = @tex2power3 texfunc[3] = @texfunc4 tex2powers[3] = @tex2power4 endif ; @texture init: ; New or newly defined variables complex ztemp = complex ztemp2 = (0,0) ; various uses; generally holds modifed #z complex tempc = (0,0) ; the trapped trap point complex traptemp = complex traptemp2 = (0,0) float tempangle = float tempangle2 = 0.0 ; angle of transformed, centered, etc., z float originalangle = 0.0 ; used for alternate form of spreadangle option float ftemp = float ftemp2 = float ftemp3 = 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 ; This array holds the result of each of the r, x, or y calculations float result[4] ; initialize arrays maxindex = 4 while index < maxindex result[index] = 0.0 index = index + 1 endwhile ; index ; For history options; initialize history arrays complex zhist[2,10] ; for storing past generations of #z (zhist[0,i]), zinput (zhist[1,i]) index2 = 0 while index2 < 2 index = 0, maxindex = 10 while index < maxindex zhist[index2,index] = ztemp index = index + 1 endwhile ; index index2 = index2 + 1 endwhile ; index2 complex thist[2,10] ; for storing past generations of the trap point before (thist[0,i]) & after (thist[1,i]) modulations index2 = 0 while index2 < 2 index = 0, maxindex = 10 while index < maxindex thist[index2,index] = tempc index = index + 1 endwhile ; index index2 = index2 + 1 endwhile ; index2 ; 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) && (@whattotrap != 26) innerradius = thresh + @ringwidth ; innerradius is really an outerradius if we are exceeding limits endif ; @whattotrap int iter = 0, int count = 0, int hitcount = 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. 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) && (@whattotrap != 26) tvtrapped2 = -1e9 ; used to store the max when looking for min-max, min+max, etc. endif ; trapmode loop: iter = iter + 1 ztemp = #z if @initialbias ztemp = (@ibprod*(ztemp + @ibaddend))^@ibexponent endif ; @initialbias if @history maxindex = 0, index = 9 while index > maxindex index2 = index-1 zhist[0,index] = zhist[0,index2] index = index2 endwhile ; index zhist[0,0] = ztemp endif ; @history if ( iter > @skippediters ) && ( iter <= watch ) ; finished skipping --- start testing for trap if @history if @hismode == "original" || @hismode == "both" if @histype == 1 ztemp = zhist[@zmixmatch2,1] elseif @histype == 2 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,1])) elseif @histype == 3 ztemp = real(zhist[@zmixmatch2,1]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 4 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,1] elseif @histype == 5 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,1]) elseif @histype == 6 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,1])) elseif @histype == 7 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,1] elseif @histype == 8 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,1]) elseif @histype == 9 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,1])) elseif @histype == 10 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,1] elseif @histype == 11 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,1]) elseif @histype == 12 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,1])) elseif @histype == 13 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,1] elseif @histype == 14 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,1] elseif @histype == 15 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,1] elseif @histype == 16 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,1] elseif @histype == 17 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,1] elseif @histype == 18 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,1] elseif @histype == 19 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,1])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,1]))) elseif @histype == 20 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,1])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,1]))) elseif @histype == 21 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,1])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,1]))) elseif @histype == 22 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,1])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,1]))) elseif @histype == 23 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,1])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,1]))) elseif @histype == 24 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,1])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,1]))) elseif @histype == 25 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,1])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,1]))) elseif @histype == 26 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,1])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,1]))) elseif @histype == 27 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,1])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,1]))) elseif @histype == 28 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,1])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,1]))) elseif @histype == 29 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,1])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,1]))) elseif @histype == 30 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,1])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,1]))) elseif @histype == 31 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,1])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,1]))) elseif @histype == 32 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,1])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,1]))) elseif @histype == 33 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,1])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,1]))) elseif @histype == 34 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,1])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,1]))) elseif @histype == 35 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,1])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,1]))) elseif @histype == 36 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,1])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,1]))) elseif @histype == 37 ztemp = zhist[@zmixmatch2,2] elseif @histype == 38 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,2])) elseif @histype == 39 ztemp = real(zhist[@zmixmatch2,2]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 40 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,2] elseif @histype == 41 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,2]) elseif @histype == 42 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,2])) elseif @histype == 43 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,2] elseif @histype == 44 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,2]) elseif @histype == 45 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,2])) elseif @histype == 46 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,2] elseif @histype == 47 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,2]) elseif @histype == 48 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,2])) elseif @histype == 49 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,2] elseif @histype == 50 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,2] elseif @histype == 51 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,2] elseif @histype == 52 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,2] elseif @histype == 53 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,2] elseif @histype == 54 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,2] elseif @histype == 55 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,2])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,2]))) elseif @histype == 56 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,2])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,2]))) elseif @histype == 57 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,2])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,2]))) elseif @histype == 58 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,2])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,2]))) elseif @histype == 59 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,2])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,2]))) elseif @histype == 60 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,2])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,2]))) elseif @histype == 61 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,2])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,2]))) elseif @histype == 62 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,2])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,2]))) elseif @histype == 63 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,2])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,2]))) elseif @histype == 64 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,2])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,2]))) elseif @histype == 65 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,2])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,2]))) elseif @histype == 66 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,2])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,2]))) elseif @histype == 67 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,2])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,2]))) elseif @histype == 68 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,2])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,2]))) elseif @histype == 69 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,2])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,2]))) elseif @histype == 70 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,2])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,2]))) elseif @histype == 71 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,2])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,2]))) elseif @histype == 72 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,2])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,2]))) elseif @histype == 73 ztemp = zhist[@zmixmatch2,3] elseif @histype == 74 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,3])) elseif @histype == 75 ztemp = real(zhist[@zmixmatch2,3]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 76 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,3] elseif @histype == 77 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,3]) elseif @histype == 78 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,3])) elseif @histype == 79 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,3] elseif @histype == 80 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,3]) elseif @histype == 81 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,3])) elseif @histype == 82 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,3] elseif @histype == 83 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,3]) elseif @histype == 84 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,3])) elseif @histype == 85 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,3] elseif @histype == 86 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,3] elseif @histype == 87 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,3] elseif @histype == 88 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,3] elseif @histype == 89 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,3] elseif @histype == 90 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,3] elseif @histype == 91 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,3])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,3]))) elseif @histype == 92 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,3])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,3]))) elseif @histype == 93 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,3])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,3]))) elseif @histype == 94 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,3])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,3]))) elseif @histype == 95 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,3])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,3]))) elseif @histype == 96 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,3])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,3]))) elseif @histype == 97 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,3])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,3]))) elseif @histype == 98 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,3])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,3]))) elseif @histype == 99 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,3])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,3]))) elseif @histype == 100 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,3])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,3]))) elseif @histype == 101 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,3])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,3]))) elseif @histype == 102 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,3])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,3]))) elseif @histype == 103 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,3])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,3]))) elseif @histype == 104 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,3])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,3]))) elseif @histype == 105 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,3])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,3]))) elseif @histype == 106 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,3])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,3]))) elseif @histype == 107 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,3])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,3]))) elseif @histype == 108 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,3])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,3]))) elseif @histype == 109 ztemp = zhist[@zmixmatch2,4] elseif @histype == 110 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,4])) elseif @histype == 111 ztemp = real(zhist[@zmixmatch2,4]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 112 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,4] elseif @histype == 113 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,4]) elseif @histype == 114 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,4])) elseif @histype == 115 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,4] elseif @histype == 116 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,4]) elseif @histype == 117 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,4])) elseif @histype == 118 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,4] elseif @histype == 119 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,4]) elseif @histype == 120 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,4])) elseif @histype == 121 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,4] elseif @histype == 122 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,4] elseif @histype == 123 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,4] elseif @histype == 124 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,4] elseif @histype == 125 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,4] elseif @histype == 126 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,4] elseif @histype == 127 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,4])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,4]))) elseif @histype == 128 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,4])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,4]))) elseif @histype == 129 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,4])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,4]))) elseif @histype == 130 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,4])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,4]))) elseif @histype == 131 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,4])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,4]))) elseif @histype == 132 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,4])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,4]))) elseif @histype == 133 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,4])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,4]))) elseif @histype == 134 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,4])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,4]))) elseif @histype == 135 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,4])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,4]))) elseif @histype == 136 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,4])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,4]))) elseif @histype == 137 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,4])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,4]))) elseif @histype == 138 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,4])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,4]))) elseif @histype == 139 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,4])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,4]))) elseif @histype == 140 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,4])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,4]))) elseif @histype == 141 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,4])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,4]))) elseif @histype == 142 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,4])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,4]))) elseif @histype == 143 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,4])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,4]))) elseif @histype == 144 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,4])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,4]))) elseif @histype == 145 ztemp = zhist[@zmixmatch2,5] elseif @histype == 146 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,5])) elseif @histype == 147 ztemp = real(zhist[@zmixmatch2,5]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 148 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,5] elseif @histype == 149 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,5]) elseif @histype == 150 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,5])) elseif @histype == 151 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,5] elseif @histype == 152 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,5]) elseif @histype == 153 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,5])) elseif @histype == 154 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,5] elseif @histype == 155 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,5]) elseif @histype == 156 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,5])) elseif @histype == 157 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,5] elseif @histype == 158 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,5] elseif @histype == 159 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,5] elseif @histype == 160 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,5] elseif @histype == 161 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,5] elseif @histype == 162 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,5] elseif @histype == 163 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,5])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,5]))) elseif @histype == 164 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,5])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,5]))) elseif @histype == 165 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,5])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,5]))) elseif @histype == 166 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,5])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,5]))) elseif @histype == 167 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,5])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,5]))) elseif @histype == 168 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,5])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,5]))) elseif @histype == 169 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,5])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,5]))) elseif @histype == 170 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,5])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,5]))) elseif @histype == 171 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,5])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,5]))) elseif @histype == 172 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,5])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,5]))) elseif @histype == 173 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,5])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,5]))) elseif @histype == 174 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,5])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,5]))) elseif @histype == 175 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,5])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,5]))) elseif @histype == 176 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,5])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,5]))) elseif @histype == 177 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,5])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,5]))) elseif @histype == 178 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,5])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,5]))) elseif @histype == 179 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,5])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,5]))) elseif @histype == 180 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,5])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,5]))) elseif @histype == 181 ztemp = zhist[@zmixmatch2,6] elseif @histype == 182 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,6])) elseif @histype == 183 ztemp = real(zhist[@zmixmatch2,6]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 184 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,6] elseif @histype == 185 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,6]) elseif @histype == 186 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,6])) elseif @histype == 187 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,6] elseif @histype == 188 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,6]) elseif @histype == 189 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,6])) elseif @histype == 190 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,6] elseif @histype == 191 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,6]) elseif @histype == 192 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,6])) elseif @histype == 193 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,6] elseif @histype == 194 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,6] elseif @histype == 195 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,6] elseif @histype == 196 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,6] elseif @histype == 197 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,6] elseif @histype == 198 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,6] elseif @histype == 199 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,6])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,6]))) elseif @histype == 200 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,6])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,6]))) elseif @histype == 201 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,6])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,6]))) elseif @histype == 202 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,6])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,6]))) elseif @histype == 203 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,6])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,6]))) elseif @histype == 204 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,6])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,6]))) elseif @histype == 205 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,6])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,6]))) elseif @histype == 206 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,6])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,6]))) elseif @histype == 207 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,6])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,6]))) elseif @histype == 208 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,6])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,6]))) elseif @histype == 209 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,6])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,6]))) elseif @histype == 210 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,6])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,6]))) elseif @histype == 211 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,6])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,6]))) elseif @histype == 212 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,6])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,6]))) elseif @histype == 213 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,6])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,6]))) elseif @histype == 214 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,6])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,6]))) elseif @histype == 215 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,6])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,6]))) elseif @histype == 216 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,6])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,6]))) elseif @histype == 217 ztemp = zhist[@zmixmatch2,7] elseif @histype == 218 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,7])) elseif @histype == 219 ztemp = real(zhist[@zmixmatch2,7]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 220 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,7] elseif @histype == 221 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,7]) elseif @histype == 222 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,7])) elseif @histype == 223 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,7] elseif @histype == 224 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,7]) elseif @histype == 225 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,7])) elseif @histype == 226 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,7] elseif @histype == 227 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,7]) elseif @histype == 228 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,7])) elseif @histype == 229 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,7] elseif @histype == 230 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,7] elseif @histype == 231 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,7] elseif @histype == 232 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,7] elseif @histype == 233 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,7] elseif @histype == 234 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,7] elseif @histype == 235 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,7])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,7]))) elseif @histype == 236 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,7])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,7]))) elseif @histype == 237 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,7])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,7]))) elseif @histype == 238 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,7])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,7]))) elseif @histype == 239 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,7])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,7]))) elseif @histype == 240 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,7])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,7]))) elseif @histype == 241 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,7])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,7]))) elseif @histype == 242 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,7])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,7]))) elseif @histype == 243 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,7])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,7]))) elseif @histype == 244 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,7])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,7]))) elseif @histype == 245 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,7])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,7]))) elseif @histype == 246 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,7])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,7]))) elseif @histype == 247 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,7])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,7]))) elseif @histype == 248 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,7])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,7]))) elseif @histype == 249 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,7])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,7]))) elseif @histype == 250 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,7])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,7]))) elseif @histype == 251 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,7])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,7]))) elseif @histype == 252 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,7])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,7]))) elseif @histype == 253 ztemp = zhist[@zmixmatch2,8] elseif @histype == 254 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,8])) elseif @histype == 255 ztemp = real(zhist[@zmixmatch2,8]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 256 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,8] elseif @histype == 257 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,8]) elseif @histype == 258 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,8])) elseif @histype == 259 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,8] elseif @histype == 260 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,8]) elseif @histype == 261 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,8])) elseif @histype == 262 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,8] elseif @histype == 263 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,8]) elseif @histype == 264 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,8])) elseif @histype == 265 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,8] elseif @histype == 266 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,8] elseif @histype == 267 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,8] elseif @histype == 268 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,8] elseif @histype == 269 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,8] elseif @histype == 270 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,8] elseif @histype == 271 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,8])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,8]))) elseif @histype == 272 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,8])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,8]))) elseif @histype == 273 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,8])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,8]))) elseif @histype == 274 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,8])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,8]))) elseif @histype == 275 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,8])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,8]))) elseif @histype == 276 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,8])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,8]))) elseif @histype == 277 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,8])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,8]))) elseif @histype == 278 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,8])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,8]))) elseif @histype == 279 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,8])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,8]))) elseif @histype == 280 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,8])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,8]))) elseif @histype == 281 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,8])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,8]))) elseif @histype == 282 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,8])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,8]))) elseif @histype == 283 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,8])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,8]))) elseif @histype == 284 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,8])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,8]))) elseif @histype == 285 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,8])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,8]))) elseif @histype == 286 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,8])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,8]))) elseif @histype == 287 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,8])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,8]))) elseif @histype == 288 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,8])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,8]))) elseif @histype == 289 ztemp = zhist[@zmixmatch2,9] elseif @histype == 290 ztemp = real(zhist[@zmixmatch1,@histype1index]) + flip(imag(zhist[@zmixmatch2,9])) elseif @histype == 291 ztemp = real(zhist[@zmixmatch2,9]) + flip(imag(zhist[@zmixmatch1,@histype1index])) elseif @histype == 292 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,9] elseif @histype == 293 ztemp = zhist[@zmixmatch1,@histype1index] - real(zhist[@zmixmatch2,9]) elseif @histype == 294 ztemp = zhist[@zmixmatch1,@histype1index] - flip(imag(zhist[@zmixmatch2,9])) elseif @histype == 295 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,9] elseif @histype == 296 ztemp = zhist[@zmixmatch1,@histype1index] + real(zhist[@zmixmatch2,9]) elseif @histype == 297 ztemp = zhist[@zmixmatch1,@histype1index] + flip(imag(zhist[@zmixmatch2,9])) elseif @histype == 298 ztemp = zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,9] elseif @histype == 299 ztemp = zhist[@zmixmatch1,@histype1index] * real(zhist[@zmixmatch2,9]) elseif @histype == 300 ztemp = zhist[@zmixmatch1,@histype1index] * flip(imag(zhist[@zmixmatch2,9])) elseif @histype == 301 ztemp = real(zhist[@zmixmatch1,@histype1index]) - zhist[@zmixmatch2,9] elseif @histype == 302 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) - zhist[@zmixmatch2,9] elseif @histype == 303 ztemp = real(zhist[@zmixmatch1,@histype1index]) + zhist[@zmixmatch2,9] elseif @histype == 304 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) + zhist[@zmixmatch2,9] elseif @histype == 305 ztemp = real(zhist[@zmixmatch1,@histype1index]) * zhist[@zmixmatch2,9] elseif @histype == 306 ztemp = flip(imag(zhist[@zmixmatch1,@histype1index])) * zhist[@zmixmatch2,9] elseif @histype == 307 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,9])) + flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,9]))) elseif @histype == 308 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,9])) - flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,9]))) elseif @histype == 309 ztemp = (real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,9])) * flip((imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,9]))) elseif @histype == 310 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,9])) + flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,9]))) elseif @histype == 311 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,9])) - flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,9]))) elseif @histype == 312 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) * real(zhist[@zmixmatch2,9])) * flip((real(zhist[@zmixmatch1,@histype1index]) * imag(zhist[@zmixmatch2,9]))) elseif @histype == 313 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,9])) + flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,9]))) elseif @histype == 314 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,9])) - flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,9]))) elseif @histype == 315 ztemp = (real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,9])) * flip((imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,9]))) elseif @histype == 316 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,9])) + flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,9]))) elseif @histype == 317 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,9])) - flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,9]))) elseif @histype == 318 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) + real(zhist[@zmixmatch2,9])) * flip((real(zhist[@zmixmatch1,@histype1index]) + imag(zhist[@zmixmatch2,9]))) elseif @histype == 319 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,9])) + flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,9]))) elseif @histype == 320 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,9])) - flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,9]))) elseif @histype == 321 ztemp = (real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,9])) * flip((imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,9]))) elseif @histype == 322 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,9])) + flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,9]))) elseif @histype == 323 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,9])) - flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,9]))) elseif @histype == 324 ztemp = (imag(zhist[@zmixmatch1,@histype1index]) - real(zhist[@zmixmatch2,9])) * flip((real(zhist[@zmixmatch1,@histype1index]) - imag(zhist[@zmixmatch2,9]))) elseif @histype == 325 ztemp = zhist[@zmixmatch1,@histype1index]/zhist[@zmixmatch2,1] elseif @histype == 326 ztemp = zhist[@zmixmatch2,1]/zhist[@zmixmatch1,@histype1index] elseif @histype == 327 ztemp = zhist[@zmixmatch1,@histype1index]^zhist[@zmixmatch2,1] elseif @histype == 328 ztemp = zhist[@zmixmatch2,1]^zhist[@zmixmatch1,@histype1index] elseif @histype == 329 ztemp = zhist[@zmixmatch1,@histype1index]/real(zhist[@zmixmatch2,1]) elseif @histype == 330 ztemp = zhist[@zmixmatch1,@histype1index]/imag(zhist[@zmixmatch2,1]) elseif @histype == 331 ztemp = zhist[@zmixmatch2,1]/real(zhist[@zmixmatch1,@histype1index]) elseif @histype == 332 ztemp = zhist[@zmixmatch2,1]/imag(zhist[@zmixmatch1,@histype1index]) elseif @histype == 333 ztemp = zhist[@zmixmatch1,@histype1index]^real(zhist[@zmixmatch2,1]) elseif @histype == 334 ztemp = zhist[@zmixmatch1,@histype1index]^imag(zhist[@zmixmatch2,1]) elseif @histype == 335 ztemp = zhist[@zmixmatch2,1]^real(zhist[@zmixmatch1,@histype1index]) elseif @histype == 336 ztemp = zhist[@zmixmatch2,1]^imag(zhist[@zmixmatch1,@histype1index]) elseif @histype == 337 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,1] + zhist[@zmixmatch2,2] elseif @histype == 338 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,1] + zhist[@zmixmatch2,2] elseif @histype == 339 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,1] - zhist[@zmixmatch2,2] elseif @histype == 340 ztemp = -zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,1] + zhist[@zmixmatch2,2] elseif @histype == 341 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,1] - zhist[@zmixmatch2,2] elseif @histype == 342 ztemp = zhist[@zmixmatch1,@histype1index] + (zhist[@zmixmatch2,1] * zhist[@zmixmatch2,2]) elseif @histype == 343 ztemp = zhist[@zmixmatch1,@histype1index] - (zhist[@zmixmatch2,1] * zhist[@zmixmatch2,2]) elseif @histype == 344 ztemp = zhist[@zmixmatch2,1] + (zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,2]) elseif @histype == 345 ztemp = zhist[@zmixmatch2,1] - (zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,2]) elseif @histype == 346 ztemp = zhist[@zmixmatch2,2] + (zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,1]) elseif @histype == 347 ztemp = zhist[@zmixmatch2,2] - (zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,1]) elseif @histype == 348 ztemp = zhist[@zmixmatch1,@histype1index]/zhist[@zmixmatch2,2] elseif @histype == 349 ztemp = zhist[@zmixmatch2,2]/zhist[@zmixmatch1,@histype1index] elseif @histype == 350 ztemp = zhist[@zmixmatch1,@histype1index]^zhist[@zmixmatch2,2] elseif @histype == 351 ztemp = zhist[@zmixmatch2,2]^zhist[@zmixmatch1,@histype1index] elseif @histype == 352 ztemp = zhist[@zmixmatch1,@histype1index]/real(zhist[@zmixmatch2,2]) elseif @histype == 353 ztemp = zhist[@zmixmatch1,@histype1index]/imag(zhist[@zmixmatch2,2]) elseif @histype == 354 ztemp = zhist[@zmixmatch2,2]/real(zhist[@zmixmatch1,@histype1index]) elseif @histype == 355 ztemp = zhist[@zmixmatch2,2]/imag(zhist[@zmixmatch1,@histype1index]) elseif @histype == 356 ztemp = zhist[@zmixmatch1,@histype1index]^real(zhist[@zmixmatch2,2]) elseif @histype == 357 ztemp = zhist[@zmixmatch1,@histype1index]^imag(zhist[@zmixmatch2,2]) elseif @histype == 358 ztemp = zhist[@zmixmatch2,2]^real(zhist[@zmixmatch1,@histype1index]) elseif @histype == 359 ztemp = zhist[@zmixmatch2,2]^imag(zhist[@zmixmatch1,@histype1index]) elseif @histype == 360 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,2] + zhist[@zmixmatch2,3] elseif @histype == 361 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,2] + zhist[@zmixmatch2,3] elseif @histype == 362 ztemp = zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,2] - zhist[@zmixmatch2,3] elseif @histype == 363 ztemp = -zhist[@zmixmatch1,@histype1index] + zhist[@zmixmatch2,2] + zhist[@zmixmatch2,3] elseif @histype == 364 ztemp = zhist[@zmixmatch1,@histype1index] - zhist[@zmixmatch2,2] - zhist[@zmixmatch2,3] elseif @histype == 365 ztemp = zhist[@zmixmatch1,@histype1index] + (zhist[@zmixmatch2,2] * zhist[@zmixmatch2,3]) elseif @histype == 366 ztemp = zhist[@zmixmatch1,@histype1index] - (zhist[@zmixmatch2,2] * zhist[@zmixmatch2,3]) elseif @histype == 367 ztemp = zhist[@zmixmatch2,2] + (zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,3]) elseif @histype == 368 ztemp = zhist[@zmixmatch2,2] - (zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,3]) elseif @histype == 369 ztemp = zhist[@zmixmatch2,3] + (zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,2]) elseif @histype == 370 ztemp = zhist[@zmixmatch2,3] - (zhist[@zmixmatch1,@histype1index] * zhist[@zmixmatch2,2]) else ztemp = #z endif ; histype if @zhist1blend ztemp = @zhist1fraction*ztemp + zhist1comp*#z endif ; @zhist1blend else if @fixaltbug ztemp = #z endif ; @fixaltbug endif ; @hismode ; else ; ztemp = #z 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(#z) if zangle < 0 zangle = zangle + twopi endif ; zangle if @frontendbias ztemp = (@febprod*(ztemp + @febaddend))^@febexponent endif ; @frontendbias ; 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)) elseif @realfront == 135 tempx = ftemp * exp(-1/(ftemp^2)) elseif @realfront == 136 tempx = log(1+ftemp) elseif @realfront == 137 tempx = log(1+log(1+ftemp)) elseif @realfront == 138 tempx = sin(ftemp^@rfpower) endif ; realfront if @realfront != 0 tempx = @rfpostscale * tempx 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)) elseif @imagfront == 135 tempy = ftemp * exp(-1/(ftemp^2)) elseif @imagfront == 136 tempy = log(1+ftemp) elseif @imagfront == 137 tempy = log(1+log(1+ftemp)) elseif @imagfront == 138 tempy = sin(ftemp^@ifpower) endif ; imagfront if @imagfront != 0 tempy = @ifpostscale * tempy endif ; @imagfront if @absolutei3 tempy = abs(tempy) endif ; @absolutei3 if @ifperturb tempy = @ifblend * tempy + ifbcomp * imag(ztemp) endif ; @ifperturb ztemp = tempx + flip(tempy) if @zinitbias ztemp = (@zibprod*(ztemp + @zibaddend))^@zibexponent endif ; @zinitbias ; 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)) elseif @initialization == 135 zinput = ztemp * exp(-1/(ztemp^2)) elseif @initialization == 136 zinput = log(1+ztemp) elseif @initialization == 137 zinput = log(1+log(1+ztemp)) elseif @initialization == 138 zinput = sin(ztemp^@zpower) 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 if @operator2 != 0 if @operator2 == 1 ; multiplication zinput = zinput * @operatee2 elseif @operator2 == 2 ; addition zinput = zinput + @operatee2 elseif @operator2 == 3 ; subtraction zinput = zinput - @operatee2 elseif @operator2 == 4 ; division zinput = zinput / @operatee2 elseif @operator2 == 5 ; exponentiation zinput = zinput ^ @operatee2 elseif @operator2 == 6 ; subtraction2 zinput = @operatee2 - zinput elseif @operator2 == 7 ; division2 zinput = @operatee2 / zinput elseif @operator2 == 8 ; exponential2 zinput = @operatee2 ^ zinput elseif @operator2 == 9 ; logarithm zinput = log(zinput) / log(@operatee2) elseif @operator2 == 10 ; logarithm2 zinput = log(@operatee2) / log(zinput) endif ; operator22 endif ; operator21 if @history if @hismode == "alternative" || @hismode == "both" maxindex = 0, index = 9 while index > maxindex index2 = index-1 zhist[1,index] = zhist[1,index2] index = index2 endwhile ; index zhist[1,0] = zinput if @histype2 == 1 zinput = zhist[@zmixmatch3,1] elseif @histype2 == 2 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,1])) elseif @histype2 == 3 zinput = real(zhist[@zmixmatch3,1]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 4 zinput = zinput - zhist[@zmixmatch3,1] elseif @histype2 == 5 zinput = zinput - real(zhist[@zmixmatch3,1]) elseif @histype2 == 6 zinput = zinput - flip(imag(zhist[@zmixmatch3,1])) elseif @histype2 == 7 zinput = zinput + zhist[@zmixmatch3,1] elseif @histype2 == 8 zinput = zinput + real(zhist[@zmixmatch3,1]) elseif @histype2 == 9 zinput = zinput + flip(imag(zhist[@zmixmatch3,1])) elseif @histype2 == 10 zinput = zinput * zhist[@zmixmatch3,1] elseif @histype2 == 11 zinput = zinput * real(zhist[@zmixmatch3,1]) elseif @histype2 == 12 zinput = zinput * flip(imag(zhist[@zmixmatch3,1])) elseif @histype2 == 13 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,1] elseif @histype2 == 14 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,1] elseif @histype2 == 15 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,1] elseif @histype2 == 16 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,1] elseif @histype2 == 17 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,1] elseif @histype2 == 18 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,1] elseif @histype2 == 19 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,1])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,1]))) elseif @histype2 == 20 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,1])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,1]))) elseif @histype2 == 21 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,1])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,1]))) elseif @histype2 == 22 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,1])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 23 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,1])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 24 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,1])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 25 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,1])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,1]))) elseif @histype2 == 26 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,1])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,1]))) elseif @histype2 == 27 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,1])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,1]))) elseif @histype2 == 28 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,1])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 29 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,1])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 30 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,1])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 31 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,1])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,1]))) elseif @histype2 == 32 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,1])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,1]))) elseif @histype2 == 33 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,1])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,1]))) elseif @histype2 == 34 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,1])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 35 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,1])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 36 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,1])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,1]))) elseif @histype2 == 37 zinput = zhist[@zmixmatch3,2] elseif @histype2 == 38 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,2])) elseif @histype2 == 39 zinput = real(zhist[@zmixmatch3,2]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 40 zinput = zinput - zhist[@zmixmatch3,2] elseif @histype2 == 41 zinput = zinput - real(zhist[@zmixmatch3,2]) elseif @histype2 == 42 zinput = zinput - flip(imag(zhist[@zmixmatch3,2])) elseif @histype2 == 43 zinput = zinput + zhist[@zmixmatch3,2] elseif @histype2 == 44 zinput = zinput + real(zhist[@zmixmatch3,2]) elseif @histype2 == 45 zinput = zinput + flip(imag(zhist[@zmixmatch3,2])) elseif @histype2 == 46 zinput = zinput * zhist[@zmixmatch3,2] elseif @histype2 == 47 zinput = zinput * real(zhist[@zmixmatch3,2]) elseif @histype2 == 48 zinput = zinput * flip(imag(zhist[@zmixmatch3,2])) elseif @histype2 == 49 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,2] elseif @histype2 == 50 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,2] elseif @histype2 == 51 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,2] elseif @histype2 == 52 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,2] elseif @histype2 == 53 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,2] elseif @histype2 == 54 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,2] elseif @histype2 == 55 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,2])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,2]))) elseif @histype2 == 56 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,2])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,2]))) elseif @histype2 == 57 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,2])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,2]))) elseif @histype2 == 58 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,2])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 59 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,2])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 60 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,2])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 61 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,2])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,2]))) elseif @histype2 == 62 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,2])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,2]))) elseif @histype2 == 63 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,2])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,2]))) elseif @histype2 == 64 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,2])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 65 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,2])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 66 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,2])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 67 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,2])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,2]))) elseif @histype2 == 68 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,2])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,2]))) elseif @histype2 == 69 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,2])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,2]))) elseif @histype2 == 70 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,2])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 71 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,2])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 72 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,2])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,2]))) elseif @histype2 == 73 zinput = zhist[@zmixmatch3,3] elseif @histype2 == 74 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,3])) elseif @histype2 == 75 zinput = real(zhist[@zmixmatch3,3]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 76 zinput = zinput - zhist[@zmixmatch3,3] elseif @histype2 == 77 zinput = zinput - real(zhist[@zmixmatch3,3]) elseif @histype2 == 78 zinput = zinput - flip(imag(zhist[@zmixmatch3,3])) elseif @histype2 == 79 zinput = zinput + zhist[@zmixmatch3,3] elseif @histype2 == 80 zinput = zinput + real(zhist[@zmixmatch3,3]) elseif @histype2 == 81 zinput = zinput + flip(imag(zhist[@zmixmatch3,3])) elseif @histype2 == 82 zinput = zinput * zhist[@zmixmatch3,3] elseif @histype2 == 83 zinput = zinput * real(zhist[@zmixmatch3,3]) elseif @histype2 == 84 zinput = zinput * flip(imag(zhist[@zmixmatch3,3])) elseif @histype2 == 85 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,3] elseif @histype2 == 86 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,3] elseif @histype2 == 87 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,3] elseif @histype2 == 88 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,3] elseif @histype2 == 89 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,3] elseif @histype2 == 90 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,3] elseif @histype2 == 91 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,3])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,3]))) elseif @histype2 == 92 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,3])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,3]))) elseif @histype2 == 93 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,3])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,3]))) elseif @histype2 == 94 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,3])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 95 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,3])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 96 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,3])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 97 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,3])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,3]))) elseif @histype2 == 98 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,3])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,3]))) elseif @histype2 == 99 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,3])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,3]))) elseif @histype2 == 100 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,3])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 101 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,3])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 102 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,3])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 103 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,3])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,3]))) elseif @histype2 == 104 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,3])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,3]))) elseif @histype2 == 105 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,3])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,3]))) elseif @histype2 == 106 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,3])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 107 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,3])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 108 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,3])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,3]))) elseif @histype2 == 109 zinput = zhist[@zmixmatch3,4] elseif @histype2 == 110 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,4])) elseif @histype2 == 111 zinput = real(zhist[@zmixmatch3,4]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 112 zinput = zinput - zhist[@zmixmatch3,4] elseif @histype2 == 113 zinput = zinput - real(zhist[@zmixmatch3,4]) elseif @histype2 == 114 zinput = zinput - flip(imag(zhist[@zmixmatch3,4])) elseif @histype2 == 115 zinput = zinput + zhist[@zmixmatch3,4] elseif @histype2 == 116 zinput = zinput + real(zhist[@zmixmatch3,4]) elseif @histype2 == 117 zinput = zinput + flip(imag(zhist[@zmixmatch3,4])) elseif @histype2 == 118 zinput = zinput * zhist[@zmixmatch3,4] elseif @histype2 == 119 zinput = zinput * real(zhist[@zmixmatch3,4]) elseif @histype2 == 120 zinput = zinput * flip(imag(zhist[@zmixmatch3,4])) elseif @histype2 == 121 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,4] elseif @histype2 == 122 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,4] elseif @histype2 == 123 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,4] elseif @histype2 == 124 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,4] elseif @histype2 == 125 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,4] elseif @histype2 == 126 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,4] elseif @histype2 == 127 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,4])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,4]))) elseif @histype2 == 128 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,4])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,4]))) elseif @histype2 == 129 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,4])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,4]))) elseif @histype2 == 130 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,4])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 131 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,4])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 132 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,4])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 133 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,4])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,4]))) elseif @histype2 == 134 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,4])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,4]))) elseif @histype2 == 135 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,4])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,4]))) elseif @histype2 == 136 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,4])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 137 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,4])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 138 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,4])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 139 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,4])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,4]))) elseif @histype2 == 140 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,4])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,4]))) elseif @histype2 == 141 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,4])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,4]))) elseif @histype2 == 142 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,4])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 143 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,4])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 144 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,4])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,4]))) elseif @histype2 == 145 zinput = zhist[@zmixmatch3,5] elseif @histype2 == 146 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,5])) elseif @histype2 == 147 zinput = real(zhist[@zmixmatch3,5]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 148 zinput = zinput - zhist[@zmixmatch3,5] elseif @histype2 == 149 zinput = zinput - real(zhist[@zmixmatch3,5]) elseif @histype2 == 150 zinput = zinput - flip(imag(zhist[@zmixmatch3,5])) elseif @histype2 == 151 zinput = zinput + zhist[@zmixmatch3,5] elseif @histype2 == 152 zinput = zinput + real(zhist[@zmixmatch3,5]) elseif @histype2 == 153 zinput = zinput + flip(imag(zhist[@zmixmatch3,5])) elseif @histype2 == 154 zinput = zinput * zhist[@zmixmatch3,5] elseif @histype2 == 155 zinput = zinput * real(zhist[@zmixmatch3,5]) elseif @histype2 == 156 zinput = zinput * flip(imag(zhist[@zmixmatch3,5])) elseif @histype2 == 157 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,5] elseif @histype2 == 158 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,5] elseif @histype2 == 159 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,5] elseif @histype2 == 160 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,5] elseif @histype2 == 161 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,5] elseif @histype2 == 162 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,5] elseif @histype2 == 163 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,5])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,5]))) elseif @histype2 == 164 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,5])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,5]))) elseif @histype2 == 165 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,5])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,5]))) elseif @histype2 == 166 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,5])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 167 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,5])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 168 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,5])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 169 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,5])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,5]))) elseif @histype2 == 170 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,5])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,5]))) elseif @histype2 == 171 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,5])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,5]))) elseif @histype2 == 172 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,5])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 173 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,5])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 174 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,5])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 175 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,5])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,5]))) elseif @histype2 == 176 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,5])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,5]))) elseif @histype2 == 177 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,5])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,5]))) elseif @histype2 == 178 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,5])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 179 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,5])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 180 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,5])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,5]))) elseif @histype2 == 181 zinput = zhist[@zmixmatch3,6] elseif @histype2 == 182 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,6])) elseif @histype2 == 183 zinput = real(zhist[@zmixmatch3,6]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 184 zinput = zinput - zhist[@zmixmatch3,6] elseif @histype2 == 185 zinput = zinput - real(zhist[@zmixmatch3,6]) elseif @histype2 == 186 zinput = zinput - flip(imag(zhist[@zmixmatch3,6])) elseif @histype2 == 187 zinput = zinput + zhist[@zmixmatch3,6] elseif @histype2 == 188 zinput = zinput + real(zhist[@zmixmatch3,6]) elseif @histype2 == 189 zinput = zinput + flip(imag(zhist[@zmixmatch3,6])) elseif @histype2 == 190 zinput = zinput * zhist[@zmixmatch3,6] elseif @histype2 == 191 zinput = zinput * real(zhist[@zmixmatch3,6]) elseif @histype2 == 192 zinput = zinput * flip(imag(zhist[@zmixmatch3,6])) elseif @histype2 == 193 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,6] elseif @histype2 == 194 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,6] elseif @histype2 == 195 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,6] elseif @histype2 == 196 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,6] elseif @histype2 == 197 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,6] elseif @histype2 == 198 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,6] elseif @histype2 == 199 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,6])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,6]))) elseif @histype2 == 200 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,6])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,6]))) elseif @histype2 == 201 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,6])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,6]))) elseif @histype2 == 202 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,6])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 203 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,6])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 204 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,6])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 205 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,6])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,6]))) elseif @histype2 == 206 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,6])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,6]))) elseif @histype2 == 207 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,6])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,6]))) elseif @histype2 == 208 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,6])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 209 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,6])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 210 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,6])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 211 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,6])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,6]))) elseif @histype2 == 212 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,6])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,6]))) elseif @histype2 == 213 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,6])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,6]))) elseif @histype2 == 214 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,6])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 215 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,6])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 216 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,6])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,6]))) elseif @histype2 == 217 zinput = zhist[@zmixmatch3,7] elseif @histype2 == 218 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,7])) elseif @histype2 == 219 zinput = real(zhist[@zmixmatch3,7]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 220 zinput = zinput - zhist[@zmixmatch3,7] elseif @histype2 == 221 zinput = zinput - real(zhist[@zmixmatch3,7]) elseif @histype2 == 222 zinput = zinput - flip(imag(zhist[@zmixmatch3,7])) elseif @histype2 == 223 zinput = zinput + zhist[@zmixmatch3,7] elseif @histype2 == 224 zinput = zinput + real(zhist[@zmixmatch3,7]) elseif @histype2 == 225 zinput = zinput + flip(imag(zhist[@zmixmatch3,7])) elseif @histype2 == 226 zinput = zinput * zhist[@zmixmatch3,7] elseif @histype2 == 227 zinput = zinput * real(zhist[@zmixmatch3,7]) elseif @histype2 == 228 zinput = zinput * flip(imag(zhist[@zmixmatch3,7])) elseif @histype2 == 229 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,7] elseif @histype2 == 230 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,7] elseif @histype2 == 231 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,7] elseif @histype2 == 232 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,7] elseif @histype2 == 233 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,7] elseif @histype2 == 234 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,7] elseif @histype2 == 235 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,7])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,7]))) elseif @histype2 == 236 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,7])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,7]))) elseif @histype2 == 237 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,7])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,7]))) elseif @histype2 == 238 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,7])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 239 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,7])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 240 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,7])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 241 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,7])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,7]))) elseif @histype2 == 242 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,7])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,7]))) elseif @histype2 == 243 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,7])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,7]))) elseif @histype2 == 244 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,7])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 245 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,7])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 246 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,7])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 247 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,7])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,7]))) elseif @histype2 == 248 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,7])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,7]))) elseif @histype2 == 249 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,7])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,7]))) elseif @histype2 == 250 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,7])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 251 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,7])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 252 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,7])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,7]))) elseif @histype2 == 253 zinput = zhist[@zmixmatch3,8] elseif @histype2 == 254 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,8])) elseif @histype2 == 255 zinput = real(zhist[@zmixmatch3,8]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 256 zinput = zinput - zhist[@zmixmatch3,8] elseif @histype2 == 257 zinput = zinput - real(zhist[@zmixmatch3,8]) elseif @histype2 == 258 zinput = zinput - flip(imag(zhist[@zmixmatch3,8])) elseif @histype2 == 259 zinput = zinput + zhist[@zmixmatch3,8] elseif @histype2 == 260 zinput = zinput + real(zhist[@zmixmatch3,8]) elseif @histype2 == 261 zinput = zinput + flip(imag(zhist[@zmixmatch3,8])) elseif @histype2 == 262 zinput = zinput * zhist[@zmixmatch3,8] elseif @histype2 == 263 zinput = zinput * real(zhist[@zmixmatch3,8]) elseif @histype2 == 264 zinput = zinput * flip(imag(zhist[@zmixmatch3,8])) elseif @histype2 == 265 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,8] elseif @histype2 == 266 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,8] elseif @histype2 == 267 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,8] elseif @histype2 == 268 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,8] elseif @histype2 == 269 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,8] elseif @histype2 == 270 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,8] elseif @histype2 == 271 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,8])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,8]))) elseif @histype2 == 272 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,8])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,8]))) elseif @histype2 == 273 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,8])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,8]))) elseif @histype2 == 274 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,8])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 275 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,8])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 276 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,8])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 277 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,8])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,8]))) elseif @histype2 == 278 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,8])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,8]))) elseif @histype2 == 279 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,8])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,8]))) elseif @histype2 == 280 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,8])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 281 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,8])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 282 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,8])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 283 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,8])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,8]))) elseif @histype2 == 284 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,8])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,8]))) elseif @histype2 == 285 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,8])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,8]))) elseif @histype2 == 286 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,8])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 287 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,8])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 288 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,8])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,8]))) elseif @histype2 == 289 zinput = zhist[@zmixmatch3,9] elseif @histype2 == 290 zinput = real(zhist[@zmixmatch4,@histype2index]) + flip(imag(zhist[@zmixmatch3,9])) elseif @histype2 == 291 zinput = real(zhist[@zmixmatch3,9]) + flip(imag(zhist[@zmixmatch4,@histype2index])) elseif @histype2 == 292 zinput = zinput - zhist[@zmixmatch3,9] elseif @histype2 == 293 zinput = zinput - real(zhist[@zmixmatch3,9]) elseif @histype2 == 294 zinput = zinput - flip(imag(zhist[@zmixmatch3,9])) elseif @histype2 == 295 zinput = zinput + zhist[@zmixmatch3,9] elseif @histype2 == 296 zinput = zinput + real(zhist[@zmixmatch3,9]) elseif @histype2 == 297 zinput = zinput + flip(imag(zhist[@zmixmatch3,9])) elseif @histype2 == 298 zinput = zinput * zhist[@zmixmatch3,9] elseif @histype2 == 299 zinput = zinput * real(zhist[@zmixmatch3,9]) elseif @histype2 == 300 zinput = zinput * flip(imag(zhist[@zmixmatch3,9])) elseif @histype2 == 301 zinput = real(zhist[@zmixmatch4,@histype2index]) - zhist[@zmixmatch3,9] elseif @histype2 == 302 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) - zhist[@zmixmatch3,9] elseif @histype2 == 303 zinput = real(zhist[@zmixmatch4,@histype2index]) + zhist[@zmixmatch3,9] elseif @histype2 == 304 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) + zhist[@zmixmatch3,9] elseif @histype2 == 305 zinput = real(zhist[@zmixmatch4,@histype2index]) * zhist[@zmixmatch3,9] elseif @histype2 == 306 zinput = flip(imag(zhist[@zmixmatch4,@histype2index])) * zhist[@zmixmatch3,9] elseif @histype2 == 307 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,9])) + flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,9]))) elseif @histype2 == 308 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,9])) - flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,9]))) elseif @histype2 == 309 zinput = (real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,9])) * flip((imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,9]))) elseif @histype2 == 310 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,9])) + flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 311 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,9])) - flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 312 zinput = (imag(zhist[@zmixmatch4,@histype2index]) * real(zhist[@zmixmatch3,9])) * flip((real(zhist[@zmixmatch4,@histype2index]) * imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 313 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,9])) + flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,9]))) elseif @histype2 == 314 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,9])) - flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,9]))) elseif @histype2 == 315 zinput = (real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,9])) * flip((imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,9]))) elseif @histype2 == 316 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,9])) + flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 317 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,9])) - flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 318 zinput = (imag(zhist[@zmixmatch4,@histype2index]) + real(zhist[@zmixmatch3,9])) * flip((real(zhist[@zmixmatch4,@histype2index]) + imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 319 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,9])) + flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,9]))) elseif @histype2 == 320 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,9])) - flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,9]))) elseif @histype2 == 321 zinput = (real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,9])) * flip((imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,9]))) elseif @histype2 == 322 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,9])) + flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 323 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,9])) - flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 324 zinput = (imag(zhist[@zmixmatch4,@histype2index]) - real(zhist[@zmixmatch3,9])) * flip((real(zhist[@zmixmatch4,@histype2index]) - imag(zhist[@zmixmatch3,9]))) elseif @histype2 == 325 zinput = zhist[@zmixmatch4,@histype2index]/zhist[@zmixmatch3,1] elseif @histype2 == 326 zinput = zhist[@zmixmatch3,1]/zhist[@zmixmatch4,@histype2index] elseif @histype2 == 327 zinput = zhist[@zmixmatch4,@histype2index]^zhist[@zmixmatch3,1] elseif @histype2 == 328 zinput = zhist[@zmixmatch3,1]^zhist[@zmixmatch4,@histype2index] elseif @histype2 == 329 zinput = zhist[@zmixmatch4,@histype2index]/real(zhist[@zmixmatch3,1]) elseif @histype2 == 330 zinput = zhist[@zmixmatch4,@histype2index]/imag(zhist[@zmixmatch3,1]) elseif @histype2 == 331 zinput = zhist[@zmixmatch3,1]/real(zhist[@zmixmatch4,@histype2index]) elseif @histype2 == 332 zinput = zhist[@zmixmatch3,1]/imag(zhist[@zmixmatch4,@histype2index]) elseif @histype2 == 333 zinput = zhist[@zmixmatch4,@histype2index]^real(zhist[@zmixmatch3,1]) elseif @histype2 == 334 zinput = zhist[@zmixmatch4,@histype2index]^imag(zhist[@zmixmatch3,1]) elseif @histype2 == 335 zinput = zhist[@zmixmatch3,1]^real(zhist[@zmixmatch4,@histype2index]) elseif @histype2 == 336 zinput = zhist[@zmixmatch3,1]^imag(zhist[@zmixmatch4,@histype2index]) elseif @histype2 == 337 zinput = zhist[@zmixmatch4,@histype2index] + zhist[@zmixmatch3,1] + zhist[@zmixmatch3,2] elseif @histype2 == 338 zinput = zhist[@zmixmatch4,@histype2index] - zhist[@zmixmatch3,1] + zhist[@zmixmatch3,2] elseif @histype2 == 339 zinput = zhist[@zmixmatch4,@histype2index] + zhist[@zmixmatch3,1] - zhist[@zmixmatch3,2] elseif @histype2 == 340 zinput = -zhist[@zmixmatch4,@histype2index] + zhist[@zmixmatch3,1] + zhist[@zmixmatch3,2] elseif @histype2 == 341 zinput = zhist[@zmixmatch4,@histype2index] - zhist[@zmixmatch3,1] - zhist[@zmixmatch3,2] elseif @histype2 == 342 zinput = zhist[@zmixmatch4,@histype2index] + (zhist[@zmixmatch3,1] * zhist[@zmixmatch3,2]) elseif @histype2 == 343 zinput = zhist[@zmixmatch4,@histype2index] - (zhist[@zmixmatch3,1] * zhist[@zmixmatch3,2]) elseif @histype2 == 344 zinput = zhist[@zmixmatch3,1] + (zhist[@zmixmatch4,@histype2index] * zhist[@zmixmatch3,2]) elseif @histype2 == 345 zinput = zhist[@zmixmatch3,1] - (zhist[@zmixmatch4,@histype2index] * zhist[@zmixmatch3,2]) elseif @histype2 == 346 zinput = zhist[@zmixmatch3,2] + (zhist[@zmixmatch4,@histype2index] * zhist[@zmixmatch3,1]) elseif @histype2 == 347 zinput = zhist[@zmixmatch3,2] - (zhist[@zmixmatch4,@histype2index] * zhist[@zmixmatch3,1]) elseif @histype2 == 348 zinput = zhist[@zmixmatch4,@histype2index]/zhist[@zmixmatch3,2] elseif @histype2 == 349 zinput = zhist[@zmixmatch3,2]/zhist[@zmixmatch4,@histype2index] elseif @histype2 == 350 zinput = zhist[@zmixmatch4,@histype2index]^zhist[@zmixmatch3,2] elseif @histype2 == 351 zinput = zhist[@zmixmatch3,2]^zhist[@zmixmatch4,@histype2index] elseif @histype2 == 352 zinput = zhist[@zmixmatch4,@histype2index]/real(zhist[@zmixmatch3,2]) elseif @histype2 == 353 zinput = zhist[@zmixmatch4,@histype2index]/imag(zhist[@zmixmatch3,2]) elseif @histype2 == 354 zinput = zhist[@zmixmatch3,2]/real(zhist[@zmixmatch4,@histype2index]) elseif @histype2 == 355 zinput = zhist[@zmixmatch3,2]/imag(zhist[@zmixmatch4,@histype2index]) elseif @histype2 == 356 zinput = zhist[@zmixmatch4,@histype2index]^real(zhist[@zmixmatch3,2]) elseif @histype2 == 357 zinput = zhist[@zmixmatch4,@histype2index]^imag(zhist[@zmixmatch3,2]) elseif @histype2 == 358 zinput = zhist[@zmixmatch3,2]^real(zhist[@zmixmatch4,@histype2index]) elseif @histype2 == 359 zinput = zhist[@zmixmatch3,2]^imag(zhist[@zmixmatch4,@histype2index]) elseif @histype2 == 360 zinput = zhist[@zmixmatch4,@histype2index] + zhist[@zmixmatch3,2] + zhist[@zmixmatch3,3] elseif @histype2 == 361 zinput = zhist[@zmixmatch4,@histype2index] - zhist[@zmixmatch3,2] + zhist[@zmixmatch3,3] elseif @histype2 == 362 zinput = zhist[@zmixmatch4,@histype2index] + zhist[@zmixmatch3,2] - zhist[@zmixmatch3,3] elseif @histype2 == 363 zinput = -zhist[@zmixmatch4,@histype2index] + zhist[@zmixmatch3,2] + zhist[@zmixmatch3,3] elseif @histype2 == 364 zinput = zhist[@zmixmatch4,@histype2index] - zhist[@zmixmatch3,2] - zhist[@zmixmatch3,3] elseif @histype2 == 365 zinput = zhist[@zmixmatch4,@histype2index] + (zhist[@zmixmatch3,2] * zhist[@zmixmatch3,3]) elseif @histype2 == 366 zinput = zhist[@zmixmatch4,@histype2index] - (zhist[@zmixmatch3,2] * zhist[@zmixmatch3,3]) elseif @histype2 == 367 zinput = zhist[@zmixmatch3,2] + (zhist[@zmixmatch4,@histype2index] * zhist[@zmixmatch3,3]) elseif @histype2 == 368 zinput = zhist[@zmixmatch3,2] - (zhist[@zmixmatch4,@histype2index] * zhist[@zmixmatch3,3]) elseif @histype2 == 369 zinput = zhist[@zmixmatch3,3] + (zhist[@zmixmatch4,@histype2index] * zhist[@zmixmatch3,2]) elseif @histype2 == 370 zinput = zhist[@zmixmatch3,3] - (zhist[@zmixmatch4,@histype2index] * zhist[@zmixmatch3,2]) else zinput = zhist[1,0] endif ; histype if @zhist2blend zinput = @zhist2fraction*zinput + zhist2comp*zhist[1,0] endif ; @zhist2blend endif ; @hismode endif ; history if @zalthisbias zinput = (@zahbprod*(zinput + @zahbaddend))^@zahbexponent endif ; @zalthisbias ; Finished front end modulating initializations ; Find coordinates and angle of point on trap graph closest to zinput (i.e., modified #z) ; 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 originalangle = tempangle ; save original value for 'Alternate Spread Style' mode if @offsetangle tempangle = tempangle + @offsetfactor endif ; @offsetangle if @sprangle tempangle = tempangle*@sprangfactor endif ; @sprangle if @recipangle tempangle = 1/tempangle endif; @recipangle if @screwmode != 0 ftemp = tempangle if @weirdness if @weirdtype == "z only" ztemp = #z elseif @weirdtype == "z+z'" ztemp = #z+zinput elseif @weirdtype == "z-z'" ztemp = #z-zinput elseif @weirdtype == "z'-z" ztemp = zinput-#z elseif @weirdtype == "z*z'" ztemp = #z*zinput elseif @weirdtype == "z/z'" ztemp = #z/zinput elseif @weirdtype == "z'/z" ztemp = zinput/#z elseif @weirdtype == "z^z'" ztemp = #z^zinput elseif @weirdtype == "z'^z" ztemp = zinput^#z elseif @weirdtype == "average" ztemp = 0.5*(#z+zinput) elseif @weirdtype == "geometric mean" ztemp = sqrt(#z*zinput) endif; @weirdtype if @blendweirdness ztemp = @weirdfraction*ztemp + weirdcomplement*zinput endif ; @blendweirdness else ztemp = zinput endif ; weirdness if @absolutelyscrewy ztemp = abs(ztemp) endif ; @absolutelyscrewy ftemp2 = real(ztemp), ftemp3 = imag(ztemp) if @recipreal ftemp2 = 1/ftemp2 endif ; @recipreal if @recipimag ftemp3 = 1/ftemp3 endif ; @recipimag tempx = cabs(ztemp) ; for magnitude modes if @recipmagn tempx = 1/tempx endif ; @recipmagn if @screwmode == 1 tempangle = tempangle*ftemp2 elseif @screwmode == 2 tempangle = tempangle*ftemp3 elseif @screwmode == 3 tempangle = ftemp2 elseif @screwmode == 4 tempangle = ftemp3 elseif @screwmode == 5 tempangle = tempangle + ftemp2 elseif @screwmode == 6 tempangle = tempangle + ftemp3 elseif @screwmode == 7 tempangle = ftemp2 - tempangle elseif @screwmode == 8 tempangle = ftemp3 - tempangle elseif @screwmode == 9 tempangle = tempangle*ftemp2*ftemp3 elseif @screwmode == 10 tempangle = tempangle+ftemp2+ftemp3 elseif @screwmode == 11 tempangle = tempangle+ftemp2-ftemp3 elseif @screwmode == 12 tempangle = tempangle-ftemp2+ftemp3 elseif @screwmode == 13 tempangle = tempangle-ftemp2-ftemp3 elseif @screwmode == 14 tempangle = ftemp2+ftemp3 elseif @screwmode == 15 tempangle = ftemp2-ftemp3 elseif @screwmode == 16 tempangle = ftemp2*ftemp3 elseif @screwmode == 17 tempangle = (tempangle+ftemp2)*ftemp3 elseif @screwmode == 18 tempangle = ftemp2*(tempangle+ftemp3) elseif @screwmode == 19 tempangle = (tempangle-ftemp2)*ftemp3 elseif @screwmode == 20 tempangle = ftemp2*(tempangle-ftemp3) elseif @screwmode == 21 tempangle = tempangle*(ftemp2+ftemp3) elseif @screwmode == 22 tempangle = tempangle*(ftemp2-ftemp3) elseif @screwmode == 23 tempangle = tempangle*(ftemp2-ftemp3) elseif @screwmode == 24 tempangle = tempx + tempangle elseif @screwmode == 25 tempangle = tempx - tempangle elseif @screwmode == 26 tempangle = tempx + ftemp2 elseif @screwmode == 27 tempangle = tempx - ftemp2 elseif @screwmode == 28 tempangle = tempx + ftemp3 elseif @screwmode == 29 tempangle = tempx - ftemp3 elseif @screwmode == 30 tempangle = tempangle/tempx elseif @screwmode == 31 tempangle = ftemp2/tempx elseif @screwmode == 32 tempangle = ftemp3/tempx elseif @screwmode == 33 tempangle = tempangle*(ftemp2+tempx) elseif @screwmode == 34 tempangle = tempangle*(tempx+ftemp3) elseif @screwmode == 35 tempangle = tempangle*(tempx-ftemp2) elseif @screwmode == 36 tempangle = tempangle*(tempx-ftemp3) elseif @screwmode == 37 tempangle = tempangle/ftemp2 elseif @screwmode == 38 tempangle = tempangle/ftemp3 endif ; @screwmode if @negatescrew tempangle = -tempangle endif ; @negatescrew if @blendscrewiness tempangle = @screwyfraction*tempangle + screwycomplement*ftemp endif; @blendscrewiness if @postrecipangle tempangle = 1/tempangle endif; @postrecipangle endif ; @screwmode if @anglebias tempc = zinput ; tempc is needed for scratchpad variable; doesn't relate to trap point tempc = (@abprod*(tempc + @abaddend))^@abexponent tempangle = tempangle + atan2(tempc) endif ; @anglebias ; 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[] ; ##jj ; Find trap function values ; Broken into ranges to keep the number of comparisons manageable regardless of ; the value of trapfunc[] if trapfunc[index2] < 32 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 )) elseif trapfunc[index2] == 21 ; e^(recip angle) result[index2] = exp( const[index2,0]/tempangle2 ) elseif 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] else ; trapfunc[index2] == 31 ; a^a^a ftemp = tempangle2^(const[index2,0]*tempangle2) result[index2] = tempangle2^(const[index2,1]*ftemp) endif ; trapfunc[index2] == 0 elseif trapfunc[index2] < 64 if 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 ) elseif trapfunc[index2] == 44 ; tan(a)/a result[index2] = tan( const[index2,0]*tempangle2 ) /tempangle2 elseif 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 ) else ; trapfunc[index2] == 63 ; hyp arccot result[index2] = atanh( const[index2,0]/tempangle2 ) endif ; trapfunc[index2] == 32 elseif trapfunc[index2] < 96 if 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 ) elseif trapfunc[index2] == 66 ; a^n result[index2] = tempangle2^const[index2,0] elseif 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^m * cosh^n ftemp2 = sinh(const[index2,0]*tempangle2), ftemp = cosh(const[index2,1]*tempangle2) result[index2] = (ftemp2^const[index2,2])*(ftemp^const[index2,3]) 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] elseif trapfunc[index2] == 89 ; sine * sine result[index2] = sin(const[index2,0]*tempangle2) * sin(const[index2,1]*tempangle2) elseif 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) else ; trapfunc[index2] == 95 ; sin * cosh result[index2] = sin(const[index2,0]*tempangle2) * cosh(const[index2,1]*tempangle2) endif ; trapfunc[index2] == 64 elseif trapfunc[index2] < 128 if 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) elseif trapfunc[index2] == 111 ; floor result[index2] = floor(const[index2,0]*tempangle2) elseif 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) else ; trapfunc[index2] == 127 ; ellipse (y-coord) result[index2] = const[index2,1]*sin(const[index2,0]*tempangle2) endif ; trapfunc[index2] == 96 elseif trapfunc[index2] < 160 if 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) elseif trapfunc[index2] == 134 ; hyperbola (y-coord) result[index2] = const[index2,1]*tan(const[index2,0]*tempangle2) elseif 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 --- 1,1,1 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 --- 1,1 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 elseif trapfunc[index2] == 156 ; cubical parabola ftemp = 1/cos(const[index2,0]*tempangle2) result[index2] = sqrt(ftemp*ftemp*tan(const[index2,1]*tempangle2)) elseif 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]) else ; 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) endif ; trapfunc[index2] == 128 elseif trapfunc[index2] < 192 if 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])) elseif trapfunc[index2] == 178 ; a*e^(1/(a^n)) result[index2] = tempangle2 * exp(const[index2,0]/(tempangle2^const[index2,1])) elseif trapfunc[index2] == 179 ; log(a) B result[index2] = log( 1 + const[index2,0]*tempangle2 ) elseif trapfunc[index2] == 180 ; log(log(a)) B result[index2] = log( 1 + const[index2,1] * log( 1 + const[index2,0]*tempangle2 )) elseif trapfunc[index2] == 181 ; Xarctangent if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness result[index2] = atan(const[index2,0]*real(ztemp2))^const[index2,1] - const[index2,2]*imag(ztemp2) ; result[index2] = atan(const[index2,0]*real(zinput))^const[index2,1] - const[index2,2]*imag(zinput) elseif trapfunc[index2] == 182 ; Xsine if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness result[index2] = sin(const[index2,0]*real(ztemp2)+ const[index2,1])^const[index2,2] - imag(ztemp2) ; result[index2] = sin(const[index2,0]*real(zinput)+ const[index2,1])^const[index2,2] - imag(zinput) elseif trapfunc[index2] == 183 ; Xparabola if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness result[index2] = (const[index2,0]*real(ztemp2))^const[index2,1] - const[index2,2]*imag(ztemp2) ; result[index2] = (const[index2,0]*real(zinput))^const[index2,1] - const[index2,2]*imag(zinput) elseif trapfunc[index2] == 184 ; Xampersand. const should = 1,4,2 if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness ftemp = real(ztemp2) ftemp2 = imag(ztemp2) result[index2] = abs(const[index2,0]*(ftemp2*ftemp2-ftemp*ftemp)*(ftemp-1)*(2*ftemp-3)- \ const[index2,1]*(ftemp*ftemp+ftemp2*ftemp2-2*ftemp)^const[index2,2]) ; ftemp = real(zinput) ; ftemp2 = imag(zinput) ; result[index2] = abs(const[index2,0]*(ftemp2*ftemp2-ftemp*ftemp)*(ftemp-1)*(ftemp-1)- \ ; const[index2,1]*(ftemp*ftemp+ftemp2*ftemp2-2*ftemp)^const[index2,2]) elseif trapfunc[index2] == 185 ; Xampersand2 ftemp = abs(real(zinput)) ftemp2 = imag(zinput) result[index2] = abs(const[index2,0]*(ftemp2*ftemp2-ftemp*ftemp)*(ftemp-1)*(ftemp-1)- \ const[index2,1]*(ftemp*ftemp+ftemp2*ftemp2-2*ftemp)^const[index2,2]) elseif trapfunc[index2] == 186 ; Xhyperbola. const = 1,1,1 if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness ftemp = real(ztemp2) ftemp2 = imag(ztemp2) result[index2] = abs(const[index2,0]*ftemp*ftemp-const[index2,1]*ftemp2*ftemp2-const[index2,2]) ; result[index2] = abs(const[index2,0]*ftemp*ftemp-const[index2,1]*ftemp2*ftemp2+const[index2,2]) elseif trapfunc[index2] == 187 ; Xbifolium. const = 1,1,0 if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness ftemp = sqr(real(ztemp2)) ftemp2 = imag(ztemp2) result[index2] = const[index2,0]*sqr(ftemp+ftemp2*ftemp2)-const[index2,1]*ftemp*ftemp2+const[index2,2] ; result[index2] = abs(const[index2,0]*ftemp^4+const[index2,1]*ftemp2^4-const[index2,2]*abs(ftemp)*ftemp2*ftemp2) elseif trapfunc[index2] == 188 ; Xbow. const = 1,1,1 if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness ftemp = sqr(real(ztemp2)) ftemp2 = imag(ztemp2) result[index2] = const[index2,0]*ftemp*ftemp-const[index2,1]*ftemp*ftemp2+const[index2,2]*ftemp2^3 ; result[index2] = abs(const[index2,0]*ftemp^4-const[index2,1]*ftemp*ftemp*ftemp2+const[index2,2]*ftemp2^3) elseif trapfunc[index2] == 189 ; Xbean. const = 4,2,1 if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness ftemp = abs(real(ztemp2)) ftemp2 = imag(ztemp2) result[index2] = ftemp^const[index2,0] + (ftemp^const[index2,1])*(ftemp2^const[index2,1]) + \ ftemp2^const[index2,0] - const[index2,2]*ftemp*(ftemp*ftemp+ftemp2*ftemp2) elseif trapfunc[index2] == 190 ; Xdulcimer. const = 1,1,1 if @weirdness ztemp2 = tempangle2*ztemp/cabs(ztemp) else ztemp2 = tempangle2*zinput/cabs(zinput) endif ; @weirdness ftemp = sqr(real(ztemp2)) ftemp2 = imag(ztemp2) result[index2] = const[index2,0]*(ftemp+sqr(ftemp2))*sqr(ftemp2) - const[index2,1]*abs(ftemp2^const[index2,2]) ; result[index2] = (ftemp+ftemp2)*imag(zinput)^const[index2,1] - const[index2,2]*abs(imag(zinput)) else ; trapfunc[index2] == 191 ; sin+tan result[index2] = sin(const[index2,0]*tempangle2) + const[index2,2]*tan(const[index2,1]*tempangle2) endif ; trapfunc[index2] == 160 elseif trapfunc[index2] < 224 if trapfunc[index2] == 192 ; sin+cot result[index2] = sin(const[index2,0]*tempangle2) + const[index2,2]*cotan(const[index2,1]*tempangle2) elseif trapfunc[index2] == 193 ; sin+sec result[index2] = sin(const[index2,0]*tempangle2) + const[index2,2]/cos(const[index2,1]*tempangle2) elseif trapfunc[index2] == 194 ; sin+csc result[index2] = sin(const[index2,0]*tempangle2) + const[index2,2]/sin(const[index2,1]*tempangle2) elseif trapfunc[index2] == 195 ; cos+tan result[index2] = cos(const[index2,0]*tempangle2) + const[index2,2]*tan(const[index2,1]*tempangle2) elseif trapfunc[index2] == 196 ; cos+cot result[index2] = cos(const[index2,0]*tempangle2) + const[index2,2]*cotan(const[index2,1]*tempangle2) elseif trapfunc[index2] == 197 ; cos+sec result[index2] = cos(const[index2,0]*tempangle2) + const[index2,2]/cos(const[index2,1]*tempangle2) elseif trapfunc[index2] == 198 ; cos+csc result[index2] = cos(const[index2,0]*tempangle2) + const[index2,2]/sin(const[index2,1]*tempangle2) elseif trapfunc[index2] == 199 ; cos*cot result[index2] = cos(const[index2,0]*tempangle2) * const[index2,2]*cotan(const[index2,1]*tempangle2) elseif trapfunc[index2] == 200 ; sec*csc result[index2] = const[index2,2]/(cos(const[index2,0]*tempangle2) * sin(const[index2,1]*tempangle2)) elseif trapfunc[index2] == 201 ; sin^n*cos^m result[index2] = (sin(const[index2,0]*tempangle2))^const[index2,1] * (cos(const[index2,3]*tempangle2))^const[index2,2] elseif trapfunc[index2] == 202 ; sin^n+cos^m result[index2] = (sin(const[index2,0]*tempangle2))^const[index2,1] + (cos(const[index2,3]*tempangle2))^const[index2,2] elseif trapfunc[index2] == 203 ; sin^n+cos^n result[index2] = (sin(const[index2,0]*tempangle2))^const[index2,2] + (cos(const[index2,1]*tempangle2))^const[index2,2] elseif trapfunc[index2] == 204 ; cos(1/a)^n result[index2] = (cos(const[index2,0]/tempangle2))^const[index2,1] + const[index2,2] elseif trapfunc[index2] == 205 ; sin+sin(1/a) result[index2] = sin(const[index2,0]*tempangle2) + const[index2,2]*sin(const[index2,1]/tempangle2) elseif trapfunc[index2] == 206 ; log*exp result[index2] = log(const[index2,0]*tempangle2) + const[index2,2]*exp(const[index2,1]*tempangle2) elseif trapfunc[index2] == 207 ; log*exp B result[index2] = log(1+const[index2,0]*tempangle2) + const[index2,2]*exp(const[index2,1]*tempangle2) elseif trapfunc[index2] == 208 ; log(1/a) B result[index2] = (log(1+const[index2,0]/tempangle2))^const[index2,1] + const[index2,2] elseif trapfunc[index2] == 209 ; 1/log B result[index2] = (1/log(1+const[index2,0]*tempangle2))^const[index2,1] + const[index2,2] elseif trapfunc[index2] == 210 ; alog B result[index2] = tempangle2 * (log(1+const[index2,0]*tempangle2))^const[index2,1] + const[index2,2] elseif trapfunc[index2] == 211 ; log^n B result[index2] = (log(1+const[index2,0]*tempangle2))^const[index2,1] + const[index2,2] elseif trapfunc[index2] == 212 ; sin*log B result[index2] = sin(const[index2,0]*tempangle2) * const[index2,2]*log(1+const[index2,1]*tempangle2) elseif trapfunc[index2] == 213 ; cos*log B result[index2] = cos(const[index2,0]*tempangle2) * const[index2,2]*log(1+const[index2,1]*tempangle2) elseif trapfunc[index2] == 214 ; a/log B result[index2] = tempangle2 / (log(1+const[index2,0]*tempangle2))^const[index2,1] + const[index2,2] elseif trapfunc[index2] == 215 ; log/a B result[index2] = ((log(1+const[index2,0]*tempangle2))^const[index2,1])/tempangle2 + const[index2,2] elseif trapfunc[index2] == 216 ; tan*log result[index2] = tan(const[index2,0]*tempangle2) * const[index2,2]*log(const[index2,1]*tempangle2) elseif trapfunc[index2] == 217 ; tan*log B result[index2] = tan(const[index2,0]*tempangle2) * const[index2,2]*log(1+const[index2,1]*tempangle2) elseif trapfunc[index2] == 218 ; e^(sin+cos) result[index2] = exp(const[index2,0]*sin(const[index2,1]*tempangle2) + const[index2,2]* \ cos(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 219 ; e^(sin+tan) result[index2] = exp(const[index2,0]*sin(const[index2,1]*tempangle2) + const[index2,2]* \ tan(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 220 ; sin+e^sin result[index2] = sin(const[index2,0]*tempangle2) + const[index2,1]*exp(const[index2,2]* \ sin(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 221 ; log(sin+cos) result[index2] = log(1+abs(const[index2,0]*sin(const[index2,1]*tempangle2) + const[index2,2]* \ cos(const[index2,3]*tempangle2))) elseif trapfunc[index2] == 222 ; sin(sin) result[index2] = const[index2,0]*sin(const[index2,1]*sin(const[index2,2]*tempangle2)+const[index2,3]) else ; trapfunc[index2] == 223 ; sin+tan(sin) result[index2] = sin(const[index2,0]*tempangle2) + const[index2,1]*tan(const[index2,2]* \ sin(const[index2,3]*tempangle2)) endif ; trapfunc[index2] == 192 else ; trapfunc[index2] >= 224 if trapfunc[index2] == 224 ; Gielis' curve ftemp = 0.25*const[index2,0]*tempangle2 ftemp2 = abs(cos(ftemp))^const[index2,1] + abs(sin(ftemp))^const[index2,2] result[index2] = ftemp2^(-1.0/const[index2,3]) elseif trapfunc[index2] == 225 ; sin+e^tan result[index2] = sin(const[index2,0]*tempangle2) + const[index2,1]*exp(const[index2,2]* \ tan(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 226 ; tan+e^sin result[index2] = tan(const[index2,0]*tempangle2) + const[index2,1]*exp(const[index2,2]* \ sin(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 227 ; tan+e^tan result[index2] = tan(const[index2,0]*tempangle2) + const[index2,1]*exp(const[index2,2]* \ tan(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 228 ; tan+tan(sin) result[index2] = tan(const[index2,0]*tempangle2) + const[index2,1]*tan(const[index2,2]* \ sin(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 229 ; tan+sin(tan) result[index2] = tan(const[index2,0]*tempangle2) + const[index2,1]*sin(const[index2,2]* \ tan(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 230 ; sin+sin(tan) result[index2] = sin(const[index2,0]*tempangle2) + const[index2,1]*sin(const[index2,2]* \ tan(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 231 ; sin^m+tan^n result[index2] = (sin(const[index2,0]*tempangle2))^const[index2,1] + (tan(const[index2,2]*tempangle2))^const[index2,3] elseif trapfunc[index2] == 232 ; hyperbola 2 --- 0.5,2,1,1 result[index2] = const[index2,0]*(const[index2,1]*const[index2,1]-1)/(const[index2,2]-const[index2,1]* \ cos(const[index2,3]*tempangle2)) elseif trapfunc[index2] == 233 ; semicubical parabola 2 --- 1,1,0,1 ftemp = cotan(const[index2,0]*tempangle2) ftemp2 = cotan(const[index2,1]*tempangle2) result[index2] = (ftemp*ftemp2 + const[index2,2])/sin(const[index2,3]*tempangle2) elseif trapfunc[index2] == 234 ; cubical parabola 2 --- 1,1,0,0.5 ftemp = cos(const[index2,0]*tempangle2) ftemp2 = sin(const[index2,1]*tempangle2 + const[index2,2]) result[index2] = (ftemp/(ftemp2*ftemp2*ftemp2))^const[index2,3] elseif trapfunc[index2] == 235 ; bean curve --- 1,1,1,1 ftemp = cos(const[index2,0]*tempangle2)^const[index2,1] ftemp2 = sqr(sin(const[index2,2]*tempangle2)^const[index2,3]) ftemp3 = sqr(ftemp) result[index2] = ftemp/(sqr(ftemp3)+ftemp2*ftemp3+sqr(ftemp2)) elseif trapfunc[index2] == 236 ; butterfly curve 1 --- 1,1,3,0.5 ftemp = sqr(cos(const[index2,0]*tempangle2)) ftemp2 = sqr(sin(const[index2,1]*tempangle2)) result[index2] = (abs(sqrt(ftemp/(ftemp^const[index2,2] + ftemp2^const[index2,2]))))^const[index2,3] elseif trapfunc[index2] == 237 ; butterfly curve 2 --- 1,4,2,5 result[index2] = exp(sin(const[index2,0]*tempangle2)) - 2*cos(const[index2,1]*tempangle2) + \ (sin(const[index2,2]*(0.041666666666666666666666666666667)*tempangle2 - \ (0.13089969389957471826927680763665)))^const[index2,3] elseif trapfunc[index2] == 238 ; teardrop curve (x) --- 1,0,1,0 result[index2] = (cos(const[index2,0]*tempangle2+const[index2,1]))^const[index2,2] + const[index2,3] elseif trapfunc[index2] == 239 ; teardrop curve (y) --- 1,1,0.5,5 result[index2] = ((sin(const[index2,0]*tempangle2))^const[index2,1])* \ ((sin(const[index2,2]*tempangle2))^const[index2,3]) elseif trapfunc[index2] == 240 ; Ddumbbell --- const = 1,2,3,1 if @weirdness ztemp2 = ztemp else ztemp2 = zinput endif ; @weirdness ftemp = sqr(real(ztemp2)) ftemp2 = sqr(imag(ztemp2)) result[index2] = const[index2,0]*((ftemp^const[index2,1])-(ftemp^const[index2,2])) - ftemp2^const[index2,3] elseif trapfunc[index2] == 241 ; Drose --- const = 1,n,0,1 if @weirdness ztemp2 = ztemp else ztemp2 = zinput endif ; @weirdness ftemp = cabs(ztemp2) result[index2] = const[index2,0]*(sin(const[index2,1]*tempangle2+const[index2,2])) - const[index2,3]*ftemp elseif trapfunc[index2] == 242 ; Plateau curve x-coord; const = 1,a,1,a, -1= 224 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 oscreciprocal[index2,0] ftemp = 1/tempangle2 else ftemp = tempangle2 endif ; oscreciprocal if !oscselector[index2,0] result[index2] = coeff[index2,0,0]*cos(coeff[index2,0,1]*ftemp) else if oscfunction[index2,0] == 0 ; sine result[index2] = coeff[index2,0,0]*sin(coeff[index2,0,1]*ftemp) elseif oscfunction[index2,0] == 1 ; tan result[index2] = coeff[index2,0,0]*tan(coeff[index2,0,1]*ftemp) elseif oscfunction[index2,0] == 2 ; exp result[index2] = coeff[index2,0,0]*exp(coeff[index2,0,1]*ftemp) elseif oscfunction[index2,0] == 3 ; sec result[index2] = coeff[index2,0,0]/cos(coeff[index2,0,1]*ftemp) elseif oscfunction[index2,0] == 4 ; csc result[index2] = coeff[index2,0,0]/sin(coeff[index2,0,1]*ftemp) elseif oscfunction[index2,0] == 5 ; cot result[index2] = coeff[index2,0,0]*cotan(coeff[index2,0,1]*ftemp) elseif oscfunction[index2,0] == 6 ; log result[index2] = coeff[index2,0,0]*log(coeff[index2,0,1]*ftemp) elseif oscfunction[index2,0] == 7 ; angle only result[index2] = coeff[index2,0,0]*ftemp endif ; oscfunction endif ; oscselector if oscpower[index2,0] if oscexponent[index2,0] == 2 result[index2] = result[index2]*result[index2] elseif oscexponent[index2,0] == 3 result[index2] = result[index2]*result[index2]*result[index2] elseif oscexponent[index2,0] == 5 ftemp = result[index2]*result[index2] result[index2] = result[index2]*result[index2]*result[index2]*ftemp elseif oscexponent[index2,0] == 7 ftemp = result[index2]*result[index2]*result[index2] result[index2] = result[index2]*ftemp*ftemp else result[index2] = result[index2]^oscexponent[index2,0] endif ; oscexponent endif ; oscpower ; 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 oscreciprocal[index2,index3] ftemp = 1/tempangle2 else ftemp = tempangle2 endif ; oscreciprocal if !oscselector[index2,index3] ftemp2 = coeff[index2,index3,0]*cos(coeff[index2,index3,1]*ftemp) else if oscfunction[index2,index3] == 0 ; sine ftemp2 = coeff[index2,index3,0]*sin(coeff[index2,index3,1]*ftemp) elseif oscfunction[index2,index3] == 1 ; tan ftemp2 = coeff[index2,index3,0]*tan(coeff[index2,index3,1]*ftemp) elseif oscfunction[index2,index3] == 2 ; exp ftemp2 = coeff[index2,index3,0]*exp(coeff[index2,index3,1]*ftemp) elseif oscfunction[index2,index3] == 3 ; sec ftemp2 = coeff[index2,index3,0]/cos(coeff[index2,index3,1]*ftemp) elseif oscfunction[index2,index3] == 4 ; csc ftemp2 = coeff[index2,index3,0]/sin(coeff[index2,index3,1]*ftemp) elseif oscfunction[index2,index3] == 5 ; cot ftemp2 = coeff[index2,index3,0]*cotan(coeff[index2,index3,1]*ftemp) elseif oscfunction[index2,index3] == 6 ; log ftemp2 = coeff[index2,index3,0]*log(coeff[index2,index3,1]*ftemp) elseif oscfunction[index2,index3] == 7 ; angle only ftemp2 = coeff[index2,index3,0]*ftemp endif ; oscfunction endif ; oscselector if oscpower[index2,index3] if oscexponent[index2,index3] == 2 ftemp2 = ftemp2*ftemp2 elseif oscexponent[index2,index3] == 3 ftemp2 = ftemp2*ftemp2*ftemp2 elseif oscexponent[index2,index3] == 5 ftemp = ftemp2*ftemp2 ftemp2 = ftemp2*ftemp2*ftemp2*ftemp elseif oscexponent[index2,index3] == 7 ftemp = ftemp2*ftemp2*ftemp2 ftemp2 = ftemp2*ftemp*ftemp else ftemp2 = ftemp2^oscexponent[index2,index3] endif ; oscexponent endif ; oscpower if oscoperator[index2, index3] == 0 result[index2] = result[index2] + ftemp2 elseif oscoperator[index2, index3] == 1 result[index2] = result[index2] - ftemp2 elseif oscoperator[index2, index3] == 2 result[index2] = result[index2] * ftemp2 elseif oscoperator[index2, index3] == 3 result[index2] = result[index2] / ftemp2 elseif oscoperator[index2, index3] == 4 result[index2] = result[index2] ^ ftemp2 elseif oscoperator[index2, index3] == 5 result[index2] = ftemp2 - result[index2] elseif oscoperator[index2, index3] == 6 result[index2] = ftemp2 / result[index2] elseif oscoperator[index2, index3] == 7 result[index2] = ftemp2 ^ result[index2] endif ; oscoperator 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[] if oscsetrecip[index2] == TRUE result[index2] = 1/result[index2] endif ; oscsetrecip[] ; 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 @alternatespread if ((@screwmode != 0) || @sprangle || @offsetangle) tempangle = originalangle endif ; @screwmode... endif ; @alternatespread if twotraps if @altcombo if @coordtype == "Polar" if @alttrapcombo == "average" result[0] = onehalf*(result[0]+result[1]) elseif @alttrapcombo == "sum" result[0] = result[0]+result[1] elseif @alttrapcombo == "difference" result[0] = result[0]-result[1] elseif @alttrapcombo == "difference2" result[0] = result[1]-result[0] elseif @alttrapcombo == "product" result[0] = result[0]*result[1] elseif @alttrapcombo == "geom. mean" result[0] = sqrt(abs(result[0]*result[1])) elseif @alttrapcombo == "quotient" result[0] = result[0]/result[1] elseif @alttrapcombo == "quotient2" result[0] = result[1]/result[0] elseif @alttrapcombo == "exponential" result[0] = result[0]^result[1] elseif @alttrapcombo == "exponential2" result[0] = result[1]^result[0] elseif @alttrapcombo == "splice1" result[0] = abs(result[0]+result[1]) elseif @alttrapcombo == "splice2" result[0] = abs(result[0]-result[1]) elseif @alttrapcombo == "splice3" result[0] = abs(result[0]*result[1]) elseif @alttrapcombo == "splice4" result[0] = abs(result[0]/result[1]) elseif @alttrapcombo == "splice5" result[0] = abs(result[1]/result[0]) elseif @alttrapcombo == "splice6" result[0] = abs(result[0]^result[1]) elseif @alttrapcombo == "smallest" if abs(result[1])abs(result[0]) result[0] = result[1] endif ; result[1] endif ; @alttrapcombo elseif @coordtype == "Parametric" if @alttrapcombo == "average" result[0] = onehalf*(result[0]+result[2]) result[1] = onehalf*(result[1]+result[3]) elseif @alttrapcombo == "sum" result[0] = result[0]+result[2] result[1] = result[1]+result[3] elseif @alttrapcombo == "difference" result[0] = result[0]-result[2] result[1] = result[1]-result[3] elseif @alttrapcombo == "difference2" result[0] = result[2]-result[0] result[1] = result[3]-result[1] elseif @alttrapcombo == "product" result[0] = result[0]*result[2] result[1] = result[1]*result[3] elseif @alttrapcombo == "geom. mean" result[0] = sqrt(abs(result[0]*result[2])) result[1] = sqrt(abs(result[1]*result[3])) elseif @alttrapcombo == "quotient" result[0] = result[0]/result[2] result[1] = result[1]/result[3] elseif @alttrapcombo == "quotient2" result[0] = result[2]/result[0] result[1] = result[3]/result[1] elseif @alttrapcombo == "exponential" result[0] = result[0]^result[2] result[1] = result[1]^result[3] elseif @alttrapcombo == "exponential2" result[0] = result[2]^result[0] result[1] = result[3]^result[1] elseif @alttrapcombo == "splice1" result[1] = result[3] elseif @alttrapcombo == "splice2" result[0] = result[2] elseif @alttrapcombo == "splice3" result[1] = result[2] elseif @alttrapcombo == "splice4" result[0] = result[1] result[1] = result[3] elseif @alttrapcombo == "splice5" result[0] = abs(result[0]+result[2]) result[1] = abs(result[1]+result[3]) elseif @alttrapcombo == "splice6" result[0] = result[0]+result[3] result[1] = result[1]+result[2] elseif @alttrapcombo == "smallest" if abs(result[2])abs(result[0]) result[0] = result[2] endif ; result[2] if abs(result[3])>abs(result[1]) result[1] = result[3] endif ; result[3] endif ; @alttrapcombo elseif @coordtype == "Mixed" if @traptype != "mixed 2" if @alttrapcombo == "average" result[0] = onethird*(result[0]+result[1]+result[2]) elseif @alttrapcombo == "sum" result[0] = result[0]+result[1]+result[2] elseif @alttrapcombo == "difference" result[0] = result[0]-result[1]-result[2] elseif @alttrapcombo == "difference2" result[0] = result[1]+result[2]-result[0] elseif @alttrapcombo == "product" result[0] = result[0]*result[1]*result[2] elseif @alttrapcombo == "geom. mean" result[0] = (abs(result[0]*result[1]*result[2]))^onethird elseif @alttrapcombo == "quotient" result[0] = result[0]/(result[1]*result[2]) elseif @alttrapcombo == "quotient2" result[0] = result[1]*result[2]/result[0] elseif @alttrapcombo == "exponential" result[0] = result[0]^(result[1]^result[2]) elseif @alttrapcombo == "exponential2" result[0] = (result[1]+result[2])^result[0] elseif @alttrapcombo == "splice1" result[0] = result[0]-result[1]+result[2] elseif @alttrapcombo == "splice2" result[0] = result[0]+result[1]-result[2] elseif @alttrapcombo == "splice3" result[0] = abs(result[0]+result[1]+result[2]) elseif @alttrapcombo == "splice4" result[0] = abs(result[0]-result[1]-result[2]) elseif @alttrapcombo == "splice5" result[0] = abs(result[0]+result[1]-result[2]) elseif @alttrapcombo == "splice6" result[0] = abs(result[0]-result[1]+result[2]) elseif @alttrapcombo == "smallest" if abs(result[1])abs(result[0]) if abs(result[2])>abs(result[1]) result[0] = result[2] else result[0] = result[1] endif ; abs(result[2]) else if abs(result[2])>abs(result[0]) result[0] = result[2] endif ; abs(result[2]) endif ; abs(result[1]) endif ; @alttrapcombo elseif @traptype == "mixed 2" if @alttrapcombo == "average" result[0] = onehalf*(result[0]+result[2]) result[1] = onehalf*(result[1]+result[2]) elseif @alttrapcombo == "sum" result[0] = result[0]+result[2] result[1] = result[1]+result[2] elseif @alttrapcombo == "difference" result[0] = result[0]-result[2] result[1] = result[1]-result[2] elseif @alttrapcombo == "difference2" result[0] = result[2]-result[0] result[1] = result[2]-result[1] elseif @alttrapcombo == "product" result[0] = result[0]*result[2] result[1] = result[1]*result[2] elseif @alttrapcombo == "geom. mean" result[0] = sqrt(abs(result[0]*result[2])) result[1] = sqrt(abs(result[1]*result[2])) elseif @alttrapcombo == "quotient" result[0] = result[0]/result[2] result[1] = result[1]/result[2] elseif @alttrapcombo == "quotient2" result[0] = result[2]/result[0] result[1] = result[2]/result[1] elseif @alttrapcombo == "exponential" result[0] = result[0]^result[2] result[1] = result[1]^result[2] elseif @alttrapcombo == "exponential2" result[0] = result[2]^result[0] result[1] = result[2]^result[1] elseif @alttrapcombo == "splice1" result[0] = result[2] elseif @alttrapcombo == "splice2" result[1] = result[2] elseif @alttrapcombo == "splice3" result[0] = abs(result[0]+result[2]) result[1] = abs(result[1]+result[2]) elseif @alttrapcombo == "splice4" result[0] = abs(result[0]-result[2]) result[1] = abs(result[1]-result[2]) elseif @alttrapcombo == "splice5" result[0] = abs(result[0]*result[2]) result[1] = abs(result[1]*result[2]) elseif @alttrapcombo == "splice6" result[0] = abs(result[0]/result[2]) result[1] = abs(result[1]/result[2]) elseif @alttrapcombo == "smallest" if abs(result[2])abs(result[0]) result[0] = result[2] endif ; result[2] if abs(result[2])>abs(result[1]) result[1] = result[2] endif ; result[2] endif ; @alttrapcombo endif ; @traptype endif ; @coordtype endif ; @altcombo endif ; twotraps 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 @altcombo tempc = traptemp else 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)) elseif @trapcombo == "splice 7" tempc = real(traptemp)*real(traptemp) + flip(imag(traptemp2)) elseif @trapcombo == "splice 8" tempc = real(traptemp2)*real(traptemp2) + flip(imag(traptemp)) elseif @trapcombo == "splice 9" tempc = real(traptemp) + flip(imag(traptemp2)*imag(traptemp2)) elseif @trapcombo == "splice 10" tempc = real(traptemp2) + flip(imag(traptemp)*imag(traptemp)) elseif @trapcombo == "splice 11" tempc = real(traptemp)*real(traptemp) + flip(imag(traptemp2)*imag(traptemp2)) elseif @trapcombo == "splice 12" tempc = real(traptemp2)*real(traptemp2) + flip(imag(traptemp)*imag(traptemp)) elseif @trapcombo == "nearest" if cabs(traptemp - zinput) < cabs(traptemp2 - zinput) tempc = traptemp else tempc = traptemp2 endif ; cabs() elseif @trapcombo == "farthest" if cabs(traptemp - zinput) > cabs(traptemp2 - zinput) tempc = traptemp else tempc = traptemp2 endif ; cabs() elseif @trapcombo == "nearest 2" if cabs(traptemp - #z) < cabs(traptemp2 - #z) tempc = traptemp else tempc = traptemp2 endif ; cabs() elseif @trapcombo == "farthest 2" if cabs(traptemp - #z) > cabs(traptemp2 - #z) tempc = traptemp else tempc = traptemp2 endif ; cabs() elseif @trapcombo == "largest" if cabs(traptemp) > cabs(traptemp2) tempc = traptemp else tempc = traptemp2 endif ; cabs() elseif @trapcombo == "smallest" if cabs(traptemp) < cabs(traptemp2) tempc = traptemp else tempc = traptemp2 endif ; cabs() elseif @trapcombo == "A^2+B^2" tempc = traptemp*traptemp + traptemp2*traptemp2 elseif @trapcombo == "A^2-B^2" tempc = traptemp*traptemp - traptemp2*traptemp2 elseif @trapcombo == "B^2-A^2" tempc = traptemp2*traptemp2 - traptemp*traptemp elseif @trapcombo == "A^3+B^3" tempc = traptemp*traptemp*traptemp + traptemp2*traptemp2*traptemp2 elseif @trapcombo == "A^3-B^3" tempc = traptemp*traptemp*traptemp - traptemp2*traptemp2*traptemp2 elseif @trapcombo == "B^3-A^3" tempc = traptemp2*traptemp2*traptemp2 - traptemp*traptemp*traptemp elseif @trapcombo == "cyclical" if iter % @trapcycle == 0 tempc = traptemp2 else tempc = traptemp endif ; iter elseif @trapcombo == "cyclical 2" if iter % @trapcycle == 0 tempc = traptemp else tempc = traptemp2 endif ; iter elseif @trapcombo == "|A+B|" tempc = abs(traptemp+traptemp2) elseif @trapcombo == "|A-B|" tempc = abs(traptemp-traptemp2) elseif @trapcombo == "|A^2+B^2|" tempc = abs(traptemp*traptemp + traptemp2*traptemp2) elseif @trapcombo == "|A^2-B^2|" tempc = abs(traptemp*traptemp - traptemp2*traptemp2) elseif @trapcombo == "|A^3+B^3|" tempc = abs(traptemp*traptemp*traptemp + traptemp2*traptemp2*traptemp2) elseif @trapcombo == "|A^3-B^3|" tempc = abs(traptemp*traptemp*traptemp - traptemp2*traptemp2*traptemp2) elseif @trapcombo == "real(z)" if real(zinput) > 0 tempc = traptemp else tempc = traptemp2 endif ; real() elseif @trapcombo == "real(z) 2" if real(zinput) > 0 tempc = traptemp2 else tempc = traptemp endif ; real() elseif @trapcombo == "real(z) 3" if real(#z) > 0 tempc = traptemp else tempc = traptemp2 endif ; real() elseif @trapcombo == "real(z) 4" if real(#z) > 0 tempc = traptemp2 else tempc = traptemp endif ; real() elseif @trapcombo == "imag(z)" if imag(zinput) > 0 tempc = traptemp else tempc = traptemp2 endif ; imag() elseif @trapcombo == "imag(z) 2" if imag(zinput) > 0 tempc = traptemp2 else tempc = traptemp endif ; imag() elseif @trapcombo == "imag(z) 3" if imag(#z) > 0 tempc = traptemp else tempc = traptemp2 endif ; imag() elseif @trapcombo == "imag(z) 4" if imag(#z) > 0 tempc = traptemp2 else tempc = traptemp endif ; imag() elseif @trapcombo == "quotient 4" tempc = real(traptemp2)/real(traptemp) + flip(imag(traptemp2)/imag(traptemp)) elseif @trapcombo == "quotient 5" tempc = real(traptemp)/imag(traptemp) + flip(real(traptemp2)/imag(traptemp2)) elseif @trapcombo == "quotient 6" tempc = imag(traptemp)/real(traptemp) + flip(imag(traptemp2)/real(traptemp2)) elseif @trapcombo == "quotient 7" tempc = real(traptemp)/imag(traptemp2) + flip(real(traptemp2)/imag(traptemp)) elseif @trapcombo == "quotient 8" tempc = imag(traptemp2)/real(traptemp) + flip(imag(traptemp)/real(traptemp2)) elseif @trapcombo == "quotient 9" tempc = real(traptemp)/real(traptemp2) + flip(imag(traptemp2)/imag(traptemp)) elseif @trapcombo == "quotient 10" tempc = real(traptemp2)/real(traptemp) + flip(imag(traptemp)/imag(traptemp2)) elseif @trapcombo == "quotient 11" tempc = real(traptemp)/imag(traptemp) + flip(imag(traptemp2)/real(traptemp2)) elseif @trapcombo == "quotient 12" tempc = imag(traptemp)/real(traptemp) + flip(real(traptemp2)/imag(traptemp2)) elseif @trapcombo == "quotient 13" tempc = real(traptemp)/imag(traptemp2) + flip(imag(traptemp)/real(traptemp2)) elseif @trapcombo == "quotient 14" tempc = imag(traptemp2)/real(traptemp) + flip(real(traptemp2)/imag(traptemp)) elseif @trapcombo == "exponential 3" tempc = real(traptemp)^real(traptemp2) + flip(imag(traptemp)^imag(traptemp2)) elseif @trapcombo == "exponential 4" tempc = real(traptemp2)^real(traptemp) + flip(imag(traptemp2)^imag(traptemp)) elseif @trapcombo == "exponential 5" tempc = real(traptemp)^imag(traptemp) + flip(real(traptemp2)^imag(traptemp2)) elseif @trapcombo == "exponential 6" tempc = imag(traptemp)^real(traptemp) + flip(imag(traptemp2)^real(traptemp2)) elseif @trapcombo == "exponential 7" tempc = real(traptemp)^imag(traptemp2) + flip(real(traptemp2)^imag(traptemp)) elseif @trapcombo == "exponential 8" tempc = imag(traptemp2)^real(traptemp) + flip(imag(traptemp)^real(traptemp2)) elseif @trapcombo == "exponential 9" tempc = real(traptemp)^real(traptemp2) + flip(imag(traptemp2)^imag(traptemp)) elseif @trapcombo == "exponential 10" tempc = real(traptemp2)^real(traptemp) + flip(imag(traptemp)^imag(traptemp2)) elseif @trapcombo == "exponential 11" tempc = real(traptemp)^imag(traptemp) + flip(imag(traptemp2)^real(traptemp2)) elseif @trapcombo == "exponential 12" tempc = imag(traptemp)^real(traptemp) + flip(real(traptemp2)^imag(traptemp2)) elseif @trapcombo == "exponential 13" tempc = real(traptemp)^imag(traptemp2) + flip(imag(traptemp)^real(traptemp2)) elseif @trapcombo == "exponential 14" tempc = imag(traptemp2)^real(traptemp) + flip(real(traptemp2)^imag(traptemp)) elseif @trapcombo == "trap 1 only" tempc = traptemp elseif @trapcombo == "trap 2 only" tempc = traptemp2 endif ; @trapcombo endif ; @altcombo else tempc = traptemp endif ; twotraps if @trapbias tempc = (@tbprod*(tempc + @tbaddend))^@tbexponent endif ; @trapbias ; trap history code, part 1 if @thistory ; update original trap history array with the new trap point maxindex = 0, index = 9 while index > maxindex index2 = index-1 thist[0,index] = thist[0,index2] index = index2 endwhile ; index thist[0,0] = tempc if (@thismode == "alternative") || (@thismode == "both") if @thistype2 == 1 tempc = thist[@trapmixmatch3,1] elseif @thistype2 == 2 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,1])) elseif @thistype2 == 3 tempc = real(thist[@trapmixmatch3,1]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 4 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,1] elseif @thistype2 == 5 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,1]) elseif @thistype2 == 6 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,1])) elseif @thistype2 == 7 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,1] elseif @thistype2 == 8 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,1]) elseif @thistype2 == 9 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,1])) elseif @thistype2 == 10 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,1] elseif @thistype2 == 11 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,1]) elseif @thistype2 == 12 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,1])) elseif @thistype2 == 13 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,1] elseif @thistype2 == 14 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,1] elseif @thistype2 == 15 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,1] elseif @thistype2 == 16 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,1] elseif @thistype2 == 17 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,1] elseif @thistype2 == 18 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,1] elseif @thistype2 == 19 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,1])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 20 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,1])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 21 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,1])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 22 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,1])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 23 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,1])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 24 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,1])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 25 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,1])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 26 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,1])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 27 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,1])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 28 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,1])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 29 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,1])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 30 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,1])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 31 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,1])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 32 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,1])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 33 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,1])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,1]))) elseif @thistype2 == 34 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,1])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 35 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,1])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 36 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,1])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,1]))) elseif @thistype2 == 37 tempc = thist[@trapmixmatch3,2] elseif @thistype2 == 38 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,2])) elseif @thistype2 == 39 tempc = real(thist[@trapmixmatch3,2]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 40 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,2] elseif @thistype2 == 41 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,2]) elseif @thistype2 == 42 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,2])) elseif @thistype2 == 43 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,2] elseif @thistype2 == 44 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,2]) elseif @thistype2 == 45 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,2])) elseif @thistype2 == 46 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,2] elseif @thistype2 == 47 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,2]) elseif @thistype2 == 48 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,2])) elseif @thistype2 == 49 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,2] elseif @thistype2 == 50 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,2] elseif @thistype2 == 51 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,2] elseif @thistype2 == 52 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,2] elseif @thistype2 == 53 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,2] elseif @thistype2 == 54 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,2] elseif @thistype2 == 55 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,2])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 56 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,2])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 57 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,2])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 58 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,2])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 59 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,2])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 60 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,2])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 61 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,2])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 62 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,2])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 63 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,2])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 64 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,2])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 65 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,2])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 66 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,2])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 67 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,2])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 68 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,2])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 69 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,2])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,2]))) elseif @thistype2 == 70 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,2])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 71 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,2])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 72 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,2])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,2]))) elseif @thistype2 == 73 tempc = thist[@trapmixmatch3,3] elseif @thistype2 == 74 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,3])) elseif @thistype2 == 75 tempc = real(thist[@trapmixmatch3,3]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 76 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,3] elseif @thistype2 == 77 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,3]) elseif @thistype2 == 78 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,3])) elseif @thistype2 == 79 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,3] elseif @thistype2 == 80 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,3]) elseif @thistype2 == 81 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,3])) elseif @thistype2 == 82 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,3] elseif @thistype2 == 83 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,3]) elseif @thistype2 == 84 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,3])) elseif @thistype2 == 85 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,3] elseif @thistype2 == 86 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,3] elseif @thistype2 == 87 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,3] elseif @thistype2 == 88 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,3] elseif @thistype2 == 89 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,3] elseif @thistype2 == 90 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,3] elseif @thistype2 == 91 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,3])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 92 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,3])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 93 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,3])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 94 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,3])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 95 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,3])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 96 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,3])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 97 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,3])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 98 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,3])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 99 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,3])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 100 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,3])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 101 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,3])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 102 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,3])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 103 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,3])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 104 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,3])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 105 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,3])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,3]))) elseif @thistype2 == 106 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,3])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 107 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,3])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 108 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,3])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,3]))) elseif @thistype2 == 109 tempc = thist[@trapmixmatch3,4] elseif @thistype2 == 110 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,4])) elseif @thistype2 == 111 tempc = real(thist[@trapmixmatch3,4]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 112 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,4] elseif @thistype2 == 113 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,4]) elseif @thistype2 == 114 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,4])) elseif @thistype2 == 115 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,4] elseif @thistype2 == 116 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,4]) elseif @thistype2 == 117 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,4])) elseif @thistype2 == 118 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,4] elseif @thistype2 == 119 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,4]) elseif @thistype2 == 120 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,4])) elseif @thistype2 == 121 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,4] elseif @thistype2 == 122 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,4] elseif @thistype2 == 123 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,4] elseif @thistype2 == 124 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,4] elseif @thistype2 == 125 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,4] elseif @thistype2 == 126 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,4] elseif @thistype2 == 127 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,4])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 128 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,4])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 129 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,4])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 130 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,4])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 131 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,4])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 132 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,4])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 133 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,4])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 134 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,4])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 135 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,4])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 136 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,4])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 137 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,4])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 138 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,4])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 139 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,4])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 140 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,4])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 141 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,4])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,4]))) elseif @thistype2 == 142 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,4])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 143 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,4])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 144 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,4])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,4]))) elseif @thistype2 == 145 tempc = thist[@trapmixmatch3,5] elseif @thistype2 == 146 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,5])) elseif @thistype2 == 147 tempc = real(thist[@trapmixmatch3,5]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 148 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,5] elseif @thistype2 == 149 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,5]) elseif @thistype2 == 150 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,5])) elseif @thistype2 == 151 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,5] elseif @thistype2 == 152 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,5]) elseif @thistype2 == 153 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,5])) elseif @thistype2 == 154 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,5] elseif @thistype2 == 155 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,5]) elseif @thistype2 == 156 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,5])) elseif @thistype2 == 157 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,5] elseif @thistype2 == 158 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,5] elseif @thistype2 == 159 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,5] elseif @thistype2 == 160 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,5] elseif @thistype2 == 161 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,5] elseif @thistype2 == 162 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,5] elseif @thistype2 == 163 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,5])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 164 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,5])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 165 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,5])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 166 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,5])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 167 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,5])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 168 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,5])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 169 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,5])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 170 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,5])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 171 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,5])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 172 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,5])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 173 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,5])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 174 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,5])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 175 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,5])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 176 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,5])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 177 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,5])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,5]))) elseif @thistype2 == 178 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,5])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 179 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,5])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 180 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,5])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,5]))) elseif @thistype2 == 181 tempc = thist[@trapmixmatch3,6] elseif @thistype2 == 182 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,6])) elseif @thistype2 == 183 tempc = real(thist[@trapmixmatch3,6]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 184 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,6] elseif @thistype2 == 185 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,6]) elseif @thistype2 == 186 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,6])) elseif @thistype2 == 187 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,6] elseif @thistype2 == 188 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,6]) elseif @thistype2 == 189 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,6])) elseif @thistype2 == 190 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,6] elseif @thistype2 == 191 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,6]) elseif @thistype2 == 192 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,6])) elseif @thistype2 == 193 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,6] elseif @thistype2 == 194 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,6] elseif @thistype2 == 195 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,6] elseif @thistype2 == 196 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,6] elseif @thistype2 == 197 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,6] elseif @thistype2 == 198 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,6] elseif @thistype2 == 199 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,6])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 200 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,6])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 201 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,6])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 202 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,6])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 203 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,6])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 204 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,6])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 205 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,6])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 206 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,6])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 207 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,6])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 208 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,6])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 209 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,6])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 210 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,6])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 211 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,6])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 212 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,6])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 213 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,6])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,6]))) elseif @thistype2 == 214 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,6])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 215 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,6])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 216 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,6])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,6]))) elseif @thistype2 == 217 tempc = thist[@trapmixmatch3,7] elseif @thistype2 == 218 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,7])) elseif @thistype2 == 219 tempc = real(thist[@trapmixmatch3,7]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 220 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,7] elseif @thistype2 == 221 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,7]) elseif @thistype2 == 222 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,7])) elseif @thistype2 == 223 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,7] elseif @thistype2 == 224 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,7]) elseif @thistype2 == 225 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,7])) elseif @thistype2 == 226 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,7] elseif @thistype2 == 227 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,7]) elseif @thistype2 == 228 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,7])) elseif @thistype2 == 229 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,7] elseif @thistype2 == 230 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,7] elseif @thistype2 == 231 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,7] elseif @thistype2 == 232 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,7] elseif @thistype2 == 233 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,7] elseif @thistype2 == 234 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,7] elseif @thistype2 == 235 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,7])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 236 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,7])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 237 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,7])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 238 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,7])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 239 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,7])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 240 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,7])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 241 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,7])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 242 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,7])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 243 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,7])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 244 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,7])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 245 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,7])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 246 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,7])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 247 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,7])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 248 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,7])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 249 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,7])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,7]))) elseif @thistype2 == 250 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,7])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 251 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,7])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 252 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,7])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,7]))) elseif @thistype2 == 253 tempc = thist[@trapmixmatch3,8] elseif @thistype2 == 254 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,8])) elseif @thistype2 == 255 tempc = real(thist[@trapmixmatch3,8]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 256 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,8] elseif @thistype2 == 257 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,8]) elseif @thistype2 == 258 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,8])) elseif @thistype2 == 259 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,8] elseif @thistype2 == 260 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,8]) elseif @thistype2 == 261 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,8])) elseif @thistype2 == 262 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,8] elseif @thistype2 == 263 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,8]) elseif @thistype2 == 264 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,8])) elseif @thistype2 == 265 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,8] elseif @thistype2 == 266 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,8] elseif @thistype2 == 267 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,8] elseif @thistype2 == 268 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,8] elseif @thistype2 == 269 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,8] elseif @thistype2 == 270 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,8] elseif @thistype2 == 271 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,8])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 272 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,8])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 273 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,8])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 274 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,8])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 275 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,8])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 276 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,8])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 277 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,8])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 278 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,8])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 279 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,8])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 280 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,8])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 281 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,8])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 282 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,8])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 283 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,8])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 284 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,8])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 285 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,8])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,8]))) elseif @thistype2 == 286 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,8])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 287 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,8])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 288 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,8])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,8]))) elseif @thistype2 == 289 tempc = thist[@trapmixmatch3,9] elseif @thistype2 == 290 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + flip(imag(thist[@trapmixmatch3,9])) elseif @thistype2 == 291 tempc = real(thist[@trapmixmatch3,9]) + flip(imag(thist[@trapmixmatch4,@traphisindex2])) elseif @thistype2 == 292 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,9] elseif @thistype2 == 293 tempc = thist[@trapmixmatch4,@traphisindex2] - real(thist[@trapmixmatch3,9]) elseif @thistype2 == 294 tempc = thist[@trapmixmatch4,@traphisindex2] - flip(imag(thist[@trapmixmatch3,9])) elseif @thistype2 == 295 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,9] elseif @thistype2 == 296 tempc = thist[@trapmixmatch4,@traphisindex2] + real(thist[@trapmixmatch3,9]) elseif @thistype2 == 297 tempc = thist[@trapmixmatch4,@traphisindex2] + flip(imag(thist[@trapmixmatch3,9])) elseif @thistype2 == 298 tempc = thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,9] elseif @thistype2 == 299 tempc = thist[@trapmixmatch4,@traphisindex2] * real(thist[@trapmixmatch3,9]) elseif @thistype2 == 300 tempc = thist[@trapmixmatch4,@traphisindex2] * flip(imag(thist[@trapmixmatch3,9])) elseif @thistype2 == 301 tempc = real(thist[@trapmixmatch4,@traphisindex2]) - thist[@trapmixmatch3,9] elseif @thistype2 == 302 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) - thist[@trapmixmatch3,9] elseif @thistype2 == 303 tempc = real(thist[@trapmixmatch4,@traphisindex2]) + thist[@trapmixmatch3,9] elseif @thistype2 == 304 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) + thist[@trapmixmatch3,9] elseif @thistype2 == 305 tempc = real(thist[@trapmixmatch4,@traphisindex2]) * thist[@trapmixmatch3,9] elseif @thistype2 == 306 tempc = flip(imag(thist[@trapmixmatch4,@traphisindex2])) * thist[@trapmixmatch3,9] elseif @thistype2 == 307 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,9])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 308 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,9])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 309 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,9])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 310 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,9])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 311 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,9])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 312 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) * real(thist[@trapmixmatch3,9])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) * imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 313 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,9])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 314 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,9])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 315 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,9])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 316 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,9])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 317 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,9])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 318 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) + real(thist[@trapmixmatch3,9])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) + imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 319 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,9])) + flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 320 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,9])) - flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 321 tempc = (real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,9])) * flip((imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,9]))) elseif @thistype2 == 322 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,9])) + flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 323 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,9])) - flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 324 tempc = (imag(thist[@trapmixmatch4,@traphisindex2]) - real(thist[@trapmixmatch3,9])) * flip((real(thist[@trapmixmatch4,@traphisindex2]) - imag(thist[@trapmixmatch3,9]))) elseif @thistype2 == 325 tempc = thist[@trapmixmatch4,@traphisindex2]/thist[@trapmixmatch3,1] elseif @thistype2 == 326 tempc = thist[@trapmixmatch3,1]/thist[@trapmixmatch4,@traphisindex2] elseif @thistype2 == 327 tempc = thist[@trapmixmatch4,@traphisindex2]^thist[@trapmixmatch3,1] elseif @thistype2 == 328 tempc = thist[@trapmixmatch3,1]^thist[@trapmixmatch4,@traphisindex2] elseif @thistype2 == 329 tempc = thist[@trapmixmatch4,@traphisindex2]/real(thist[@trapmixmatch3,1]) elseif @thistype2 == 330 tempc = thist[@trapmixmatch4,@traphisindex2]/imag(thist[@trapmixmatch3,1]) elseif @thistype2 == 331 tempc = thist[@trapmixmatch3,1]/real(thist[@trapmixmatch4,@traphisindex2]) elseif @thistype2 == 332 tempc = thist[@trapmixmatch3,1]/imag(thist[@trapmixmatch4,@traphisindex2]) elseif @thistype2 == 333 tempc = thist[@trapmixmatch4,@traphisindex2]^real(thist[@trapmixmatch3,1]) elseif @thistype2 == 334 tempc = thist[@trapmixmatch4,@traphisindex2]^imag(thist[@trapmixmatch3,1]) elseif @thistype2 == 335 tempc = thist[@trapmixmatch3,1]^real(thist[@trapmixmatch4,@traphisindex2]) elseif @thistype2 == 336 tempc = thist[@trapmixmatch3,1]^imag(thist[@trapmixmatch4,@traphisindex2]) elseif @thistype2 == 337 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,1] + thist[@trapmixmatch3,2] elseif @thistype2 == 338 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,1] + thist[@trapmixmatch3,2] elseif @thistype2 == 339 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,1] - thist[@trapmixmatch3,2] elseif @thistype2 == 340 tempc = -thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,1] + thist[@trapmixmatch3,2] elseif @thistype2 == 341 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,1] - thist[@trapmixmatch3,2] elseif @thistype2 == 342 tempc = thist[@trapmixmatch4,@traphisindex2] + (thist[@trapmixmatch3,1] * thist[@trapmixmatch3,2]) elseif @thistype2 == 343 tempc = thist[@trapmixmatch4,@traphisindex2] - (thist[@trapmixmatch3,1] * thist[@trapmixmatch3,2]) elseif @thistype2 == 344 tempc = thist[@trapmixmatch3,1] + (thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,2]) elseif @thistype2 == 345 tempc = thist[@trapmixmatch3,1] - (thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,2]) elseif @thistype2 == 346 tempc = thist[@trapmixmatch3,2] + (thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,1]) elseif @thistype2 == 347 tempc = thist[@trapmixmatch3,2] - (thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,1]) elseif @thistype2 == 348 tempc = thist[@trapmixmatch4,@traphisindex2]/thist[@trapmixmatch3,2] elseif @thistype2 == 349 tempc = thist[@trapmixmatch3,2]/thist[@trapmixmatch4,@traphisindex2] elseif @thistype2 == 350 tempc = thist[@trapmixmatch4,@traphisindex2]^thist[@trapmixmatch3,2] elseif @thistype2 == 351 tempc = thist[@trapmixmatch3,2]^thist[@trapmixmatch4,@traphisindex2] elseif @thistype2 == 352 tempc = thist[@trapmixmatch4,@traphisindex2]/real(thist[@trapmixmatch3,2]) elseif @thistype2 == 353 tempc = thist[@trapmixmatch4,@traphisindex2]/imag(thist[@trapmixmatch3,2]) elseif @thistype2 == 354 tempc = thist[@trapmixmatch3,2]/real(thist[@trapmixmatch4,@traphisindex2]) elseif @thistype2 == 355 tempc = thist[@trapmixmatch3,2]/imag(thist[@trapmixmatch4,@traphisindex2]) elseif @thistype2 == 356 tempc = thist[@trapmixmatch4,@traphisindex2]^real(thist[@trapmixmatch3,2]) elseif @thistype2 == 357 tempc = thist[@trapmixmatch4,@traphisindex2]^imag(thist[@trapmixmatch3,2]) elseif @thistype2 == 358 tempc = thist[@trapmixmatch3,2]^real(thist[@trapmixmatch4,@traphisindex2]) elseif @thistype2 == 359 tempc = thist[@trapmixmatch3,2]^imag(thist[@trapmixmatch4,@traphisindex2]) elseif @thistype2 == 360 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,2] + thist[@trapmixmatch3,3] elseif @thistype2 == 361 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,2] + thist[@trapmixmatch3,3] elseif @thistype2 == 362 tempc = thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,2] - thist[@trapmixmatch3,3] elseif @thistype2 == 363 tempc = -thist[@trapmixmatch4,@traphisindex2] + thist[@trapmixmatch3,2] + thist[@trapmixmatch3,3] elseif @thistype2 == 364 tempc = thist[@trapmixmatch4,@traphisindex2] - thist[@trapmixmatch3,2] - thist[@trapmixmatch3,3] elseif @thistype2 == 365 tempc = thist[@trapmixmatch4,@traphisindex2] + (thist[@trapmixmatch3,2] * thist[@trapmixmatch3,3]) elseif @thistype2 == 366 tempc = thist[@trapmixmatch4,@traphisindex2] - (thist[@trapmixmatch3,2] * thist[@trapmixmatch3,3]) elseif @thistype2 == 367 tempc = thist[@trapmixmatch3,2] + (thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,3]) elseif @thistype2 == 368 tempc = thist[@trapmixmatch3,2] - (thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,3]) elseif @thistype2 == 369 tempc = thist[@trapmixmatch3,3] + (thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,2]) elseif @thistype2 == 370 tempc = thist[@trapmixmatch3,3] - (thist[@trapmixmatch4,@traphisindex2] * thist[@trapmixmatch3,2]) else tempc = tempc endif ; thistype2 if @thist2blend tempc = @thist2fraction*tempc + thist2comp*thist[0,0] endif ; @thist2blend endif ; @thismode endif ; @thistory ; end trap history code, part 1 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 if @transmutebias tempc = (@tmbprod*(tempc + @tmbaddend))^@tmbexponent endif ; @transmutebias ; 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)) elseif @transmogrify == 135 tempc = tempc * exp(-1/(tempc^2)) elseif @transmogrify == 136 tempc = log(1+tempc) elseif @transmogrify == 137 tempc = log(1+log(1+tempc)) elseif @transmogrify == 138 tempc = sin(tempc^@tpower) endif ; transmogrify2 endif ; transmogrify1 if @trapperturb tempc = @trapblend * tempc + trapbcomp * traptemp endif ; @trapperturb if @backendbias tempc = (@bebprod*(tempc + @bebaddend))^@bebexponent endif ; @backendbias ; 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)) elseif @realback == 135 tempx = ftemp * exp(-1/(ftemp^2)) elseif @realback == 136 tempx = log(1+ftemp) elseif @realback == 137 tempx = log(1+log(1+ftemp)) elseif @realback == 138 tempx = sin(ftemp^@rbpower) endif ; realback if @realback != 0 tempx = @rbpostscale * tempx 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)) elseif @imagback == 135 tempy = ftemp * exp(-1/(ftemp^2)) elseif @imagback == 136 tempy = log(1+ftemp) elseif @imagback == 137 tempy = log(1+log(1+ftemp)) elseif @imagback == 138 tempy = sin(ftemp^@ibpower) endif ; imagback if @imagback != 0 tempy = @ibpostscale * tempy 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 if @tvariantbias tempc = (@tvbprod*(tempc + @tvbaddend))^@tvbexponent endif ; @tvariantbias tangle = atan2( tempc ) if ( tangle < 0 ) tangle = tangle + twopi endif ; tangle if @twavy ftemp = ftemp2 = cabs( tempc ) if @twavmode == 0 ; radial mode ftemp = ftemp + @twavamp * ftemp * sin( @twavfreq * tangle ) ; vary radius tempc = ftemp * exp( flip( tangle )) ; compute new tempc elseif @twavmode == 1 ; tangential mode tangle = tangle + @twavamp * tangle * sin( @twavfreq * ftemp ) ; vary azimuth tempc = ftemp * exp( flip( tangle )) ; compute new tempc else ; both radial and tangential ftemp = ftemp + @twavamp * ftemp * sin( @twavfreq * tangle ) ; vary radius tangle = tangle + @twavamp2 * tangle * sin( @twavfreq2 * ftemp2 ) ; 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 @toperator != 0 if @toperator == 1 ; multiplication tempc = tempc * @toperatee elseif @toperator == 2 ; addition tempc = tempc + @toperatee elseif @toperator == 3 ; subtraction tempc = tempc - @toperatee elseif @toperator == 4 ; division tempc = tempc / @toperatee elseif @toperator == 5 ; exponentiation tempc = tempc ^ @toperatee elseif @toperator == 6 ; subtraction2 tempc = @toperatee - tempc elseif @toperator == 7 ; division2 tempc = @toperatee / tempc elseif @toperator == 8 ; exponential2 tempc = @toperatee ^ tempc elseif @toperator == 9 ; logarithm tempc = log(tempc) / log(@toperatee) elseif @toperator == 10 ; logarithm2 tempc = log(@toperatee) / log(tempc) endif ; toperator2 endif ; toperator1 if @thisbias tempc = (@thbprod*(tempc + @thbaddend))^@thbexponent endif ; @thisbias ; trap history code, part 2 if @thistory ; update new, alternative trap history array with the new trap point maxindex = 0, index = 9 while index > maxindex index2 = index-1 thist[1,index] = thist[1,index2] index = index2 endwhile ; index thist[1,0] = tempc if (@thismode == "original") || (@thismode == "both") if @thistype == 1 tempc = thist[@trapmixmatch2,1] elseif @thistype == 2 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,1])) elseif @thistype == 3 tempc = real(thist[@trapmixmatch2,1]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 4 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,1] elseif @thistype == 5 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,1]) elseif @thistype == 6 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,1])) elseif @thistype == 7 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,1] elseif @thistype == 8 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,1]) elseif @thistype == 9 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,1])) elseif @thistype == 10 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,1] elseif @thistype == 11 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,1]) elseif @thistype == 12 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,1])) elseif @thistype == 13 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,1] elseif @thistype == 14 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,1] elseif @thistype == 15 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,1] elseif @thistype == 16 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,1] elseif @thistype == 17 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,1] elseif @thistype == 18 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,1] elseif @thistype == 19 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,1])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,1]))) elseif @thistype == 20 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,1])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,1]))) elseif @thistype == 21 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,1])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,1]))) elseif @thistype == 22 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,1])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,1]))) elseif @thistype == 23 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,1])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,1]))) elseif @thistype == 24 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,1])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,1]))) elseif @thistype == 25 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,1])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,1]))) elseif @thistype == 26 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,1])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,1]))) elseif @thistype == 27 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,1])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,1]))) elseif @thistype == 28 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,1])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,1]))) elseif @thistype == 29 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,1])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,1]))) elseif @thistype == 30 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,1])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,1]))) elseif @thistype == 31 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,1])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,1]))) elseif @thistype == 32 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,1])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,1]))) elseif @thistype == 33 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,1])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,1]))) elseif @thistype == 34 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,1])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,1]))) elseif @thistype == 35 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,1])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,1]))) elseif @thistype == 36 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,1])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,1]))) elseif @thistype == 37 tempc = thist[@trapmixmatch2,2] elseif @thistype == 38 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,2])) elseif @thistype == 39 tempc = real(thist[@trapmixmatch2,2]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 40 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,2] elseif @thistype == 41 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,2]) elseif @thistype == 42 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,2])) elseif @thistype == 43 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,2] elseif @thistype == 44 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,2]) elseif @thistype == 45 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,2])) elseif @thistype == 46 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,2] elseif @thistype == 47 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,2]) elseif @thistype == 48 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,2])) elseif @thistype == 49 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,2] elseif @thistype == 50 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,2] elseif @thistype == 51 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,2] elseif @thistype == 52 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,2] elseif @thistype == 53 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,2] elseif @thistype == 54 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,2] elseif @thistype == 55 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,2])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,2]))) elseif @thistype == 56 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,2])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,2]))) elseif @thistype == 57 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,2])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,2]))) elseif @thistype == 58 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,2])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,2]))) elseif @thistype == 59 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,2])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,2]))) elseif @thistype == 60 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,2])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,2]))) elseif @thistype == 61 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,2])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,2]))) elseif @thistype == 62 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,2])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,2]))) elseif @thistype == 63 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,2])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,2]))) elseif @thistype == 64 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,2])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,2]))) elseif @thistype == 65 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,2])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,2]))) elseif @thistype == 66 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,2])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,2]))) elseif @thistype == 67 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,2])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,2]))) elseif @thistype == 68 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,2])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,2]))) elseif @thistype == 69 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,2])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,2]))) elseif @thistype == 70 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,2])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,2]))) elseif @thistype == 71 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,2])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,2]))) elseif @thistype == 72 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,2])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,2]))) elseif @thistype == 73 tempc = thist[@trapmixmatch2,3] elseif @thistype == 74 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,3])) elseif @thistype == 75 tempc = real(thist[@trapmixmatch2,3]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 76 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,3] elseif @thistype == 77 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,3]) elseif @thistype == 78 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,3])) elseif @thistype == 79 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,3] elseif @thistype == 80 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,3]) elseif @thistype == 81 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,3])) elseif @thistype == 82 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,3] elseif @thistype == 83 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,3]) elseif @thistype == 84 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,3])) elseif @thistype == 85 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,3] elseif @thistype == 86 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,3] elseif @thistype == 87 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,3] elseif @thistype == 88 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,3] elseif @thistype == 89 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,3] elseif @thistype == 90 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,3] elseif @thistype == 91 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,3])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,3]))) elseif @thistype == 92 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,3])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,3]))) elseif @thistype == 93 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,3])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,3]))) elseif @thistype == 94 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,3])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,3]))) elseif @thistype == 95 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,3])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,3]))) elseif @thistype == 96 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,3])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,3]))) elseif @thistype == 97 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,3])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,3]))) elseif @thistype == 98 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,3])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,3]))) elseif @thistype == 99 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,3])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,3]))) elseif @thistype == 100 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,3])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,3]))) elseif @thistype == 101 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,3])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,3]))) elseif @thistype == 102 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,3])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,3]))) elseif @thistype == 103 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,3])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,3]))) elseif @thistype == 104 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,3])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,3]))) elseif @thistype == 105 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,3])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,3]))) elseif @thistype == 106 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,3])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,3]))) elseif @thistype == 107 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,3])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,3]))) elseif @thistype == 108 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,3])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,3]))) elseif @thistype == 109 tempc = thist[@trapmixmatch2,4] elseif @thistype == 110 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,4])) elseif @thistype == 111 tempc = real(thist[@trapmixmatch2,4]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 112 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,4] elseif @thistype == 113 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,4]) elseif @thistype == 114 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,4])) elseif @thistype == 115 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,4] elseif @thistype == 116 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,4]) elseif @thistype == 117 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,4])) elseif @thistype == 118 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,4] elseif @thistype == 119 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,4]) elseif @thistype == 120 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,4])) elseif @thistype == 121 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,4] elseif @thistype == 122 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,4] elseif @thistype == 123 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,4] elseif @thistype == 124 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,4] elseif @thistype == 125 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,4] elseif @thistype == 126 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,4] elseif @thistype == 127 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,4])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,4]))) elseif @thistype == 128 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,4])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,4]))) elseif @thistype == 129 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,4])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,4]))) elseif @thistype == 130 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,4])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,4]))) elseif @thistype == 131 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,4])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,4]))) elseif @thistype == 132 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,4])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,4]))) elseif @thistype == 133 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,4])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,4]))) elseif @thistype == 134 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,4])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,4]))) elseif @thistype == 135 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,4])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,4]))) elseif @thistype == 136 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,4])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,4]))) elseif @thistype == 137 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,4])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,4]))) elseif @thistype == 138 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,4])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,4]))) elseif @thistype == 139 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,4])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,4]))) elseif @thistype == 140 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,4])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,4]))) elseif @thistype == 141 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,4])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,4]))) elseif @thistype == 142 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,4])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,4]))) elseif @thistype == 143 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,4])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,4]))) elseif @thistype == 144 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,4])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,4]))) elseif @thistype == 145 tempc = thist[@trapmixmatch2,5] elseif @thistype == 146 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,5])) elseif @thistype == 147 tempc = real(thist[@trapmixmatch2,5]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 148 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,5] elseif @thistype == 149 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,5]) elseif @thistype == 150 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,5])) elseif @thistype == 151 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,5] elseif @thistype == 152 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,5]) elseif @thistype == 153 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,5])) elseif @thistype == 154 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,5] elseif @thistype == 155 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,5]) elseif @thistype == 156 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,5])) elseif @thistype == 157 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,5] elseif @thistype == 158 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,5] elseif @thistype == 159 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,5] elseif @thistype == 160 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,5] elseif @thistype == 161 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,5] elseif @thistype == 162 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,5] elseif @thistype == 163 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,5])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,5]))) elseif @thistype == 164 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,5])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,5]))) elseif @thistype == 165 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,5])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,5]))) elseif @thistype == 166 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,5])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,5]))) elseif @thistype == 167 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,5])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,5]))) elseif @thistype == 168 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,5])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,5]))) elseif @thistype == 169 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,5])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,5]))) elseif @thistype == 170 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,5])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,5]))) elseif @thistype == 171 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,5])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,5]))) elseif @thistype == 172 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,5])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,5]))) elseif @thistype == 173 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,5])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,5]))) elseif @thistype == 174 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,5])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,5]))) elseif @thistype == 175 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,5])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,5]))) elseif @thistype == 176 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,5])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,5]))) elseif @thistype == 177 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,5])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,5]))) elseif @thistype == 178 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,5])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,5]))) elseif @thistype == 179 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,5])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,5]))) elseif @thistype == 180 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,5])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,5]))) elseif @thistype == 181 tempc = thist[@trapmixmatch2,6] elseif @thistype == 182 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,6])) elseif @thistype == 183 tempc = real(thist[@trapmixmatch2,6]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 184 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,6] elseif @thistype == 185 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,6]) elseif @thistype == 186 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,6])) elseif @thistype == 187 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,6] elseif @thistype == 188 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,6]) elseif @thistype == 189 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,6])) elseif @thistype == 190 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,6] elseif @thistype == 191 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,6]) elseif @thistype == 192 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,6])) elseif @thistype == 193 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,6] elseif @thistype == 194 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,6] elseif @thistype == 195 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,6] elseif @thistype == 196 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,6] elseif @thistype == 197 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,6] elseif @thistype == 198 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,6] elseif @thistype == 199 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,6])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,6]))) elseif @thistype == 200 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,6])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,6]))) elseif @thistype == 201 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,6])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,6]))) elseif @thistype == 202 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,6])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,6]))) elseif @thistype == 203 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,6])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,6]))) elseif @thistype == 204 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,6])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,6]))) elseif @thistype == 205 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,6])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,6]))) elseif @thistype == 206 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,6])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,6]))) elseif @thistype == 207 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,6])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,6]))) elseif @thistype == 208 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,6])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,6]))) elseif @thistype == 209 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,6])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,6]))) elseif @thistype == 210 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,6])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,6]))) elseif @thistype == 211 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,6])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,6]))) elseif @thistype == 212 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,6])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,6]))) elseif @thistype == 213 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,6])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,6]))) elseif @thistype == 214 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,6])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,6]))) elseif @thistype == 215 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,6])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,6]))) elseif @thistype == 216 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,6])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,6]))) elseif @thistype == 217 tempc = thist[@trapmixmatch2,7] elseif @thistype == 218 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,7])) elseif @thistype == 219 tempc = real(thist[@trapmixmatch2,7]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 220 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,7] elseif @thistype == 221 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,7]) elseif @thistype == 222 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,7])) elseif @thistype == 223 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,7] elseif @thistype == 224 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,7]) elseif @thistype == 225 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,7])) elseif @thistype == 226 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,7] elseif @thistype == 227 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,7]) elseif @thistype == 228 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,7])) elseif @thistype == 229 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,7] elseif @thistype == 230 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,7] elseif @thistype == 231 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,7] elseif @thistype == 232 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,7] elseif @thistype == 233 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,7] elseif @thistype == 234 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,7] elseif @thistype == 235 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,7])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,7]))) elseif @thistype == 236 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,7])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,7]))) elseif @thistype == 237 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,7])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,7]))) elseif @thistype == 238 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,7])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,7]))) elseif @thistype == 239 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,7])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,7]))) elseif @thistype == 240 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,7])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,7]))) elseif @thistype == 241 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,7])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,7]))) elseif @thistype == 242 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,7])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,7]))) elseif @thistype == 243 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,7])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,7]))) elseif @thistype == 244 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,7])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,7]))) elseif @thistype == 245 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,7])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,7]))) elseif @thistype == 246 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,7])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,7]))) elseif @thistype == 247 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,7])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,7]))) elseif @thistype == 248 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,7])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,7]))) elseif @thistype == 249 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,7])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,7]))) elseif @thistype == 250 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,7])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,7]))) elseif @thistype == 251 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,7])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,7]))) elseif @thistype == 252 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,7])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,7]))) elseif @thistype == 253 tempc = thist[@trapmixmatch2,8] elseif @thistype == 254 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,8])) elseif @thistype == 255 tempc = real(thist[@trapmixmatch2,8]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 256 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,8] elseif @thistype == 257 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,8]) elseif @thistype == 258 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,8])) elseif @thistype == 259 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,8] elseif @thistype == 260 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,8]) elseif @thistype == 261 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,8])) elseif @thistype == 262 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,8] elseif @thistype == 263 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,8]) elseif @thistype == 264 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,8])) elseif @thistype == 265 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,8] elseif @thistype == 266 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,8] elseif @thistype == 267 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,8] elseif @thistype == 268 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,8] elseif @thistype == 269 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,8] elseif @thistype == 270 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,8] elseif @thistype == 271 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,8])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,8]))) elseif @thistype == 272 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,8])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,8]))) elseif @thistype == 273 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,8])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,8]))) elseif @thistype == 274 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,8])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,8]))) elseif @thistype == 275 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,8])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,8]))) elseif @thistype == 276 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,8])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,8]))) elseif @thistype == 277 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,8])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,8]))) elseif @thistype == 278 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,8])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,8]))) elseif @thistype == 279 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,8])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,8]))) elseif @thistype == 280 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,8])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,8]))) elseif @thistype == 281 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,8])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,8]))) elseif @thistype == 282 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,8])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,8]))) elseif @thistype == 283 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,8])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,8]))) elseif @thistype == 284 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,8])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,8]))) elseif @thistype == 285 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,8])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,8]))) elseif @thistype == 286 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,8])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,8]))) elseif @thistype == 287 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,8])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,8]))) elseif @thistype == 288 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,8])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,8]))) elseif @thistype == 289 tempc = thist[@trapmixmatch2,9] elseif @thistype == 290 tempc = real(thist[@trapmixmatch1,@traphisindex]) + flip(imag(thist[@trapmixmatch2,9])) elseif @thistype == 291 tempc = real(thist[@trapmixmatch2,9]) + flip(imag(thist[@trapmixmatch1,@traphisindex])) elseif @thistype == 292 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,9] elseif @thistype == 293 tempc = thist[@trapmixmatch1,@traphisindex] - real(thist[@trapmixmatch2,9]) elseif @thistype == 294 tempc = thist[@trapmixmatch1,@traphisindex] - flip(imag(thist[@trapmixmatch2,9])) elseif @thistype == 295 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,9] elseif @thistype == 296 tempc = thist[@trapmixmatch1,@traphisindex] + real(thist[@trapmixmatch2,9]) elseif @thistype == 297 tempc = thist[@trapmixmatch1,@traphisindex] + flip(imag(thist[@trapmixmatch2,9])) elseif @thistype == 298 tempc = thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,9] elseif @thistype == 299 tempc = thist[@trapmixmatch1,@traphisindex] * real(thist[@trapmixmatch2,9]) elseif @thistype == 300 tempc = thist[@trapmixmatch1,@traphisindex] * flip(imag(thist[@trapmixmatch2,9])) elseif @thistype == 301 tempc = real(thist[@trapmixmatch1,@traphisindex]) - thist[@trapmixmatch2,9] elseif @thistype == 302 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) - thist[@trapmixmatch2,9] elseif @thistype == 303 tempc = real(thist[@trapmixmatch1,@traphisindex]) + thist[@trapmixmatch2,9] elseif @thistype == 304 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) + thist[@trapmixmatch2,9] elseif @thistype == 305 tempc = real(thist[@trapmixmatch1,@traphisindex]) * thist[@trapmixmatch2,9] elseif @thistype == 306 tempc = flip(imag(thist[@trapmixmatch1,@traphisindex])) * thist[@trapmixmatch2,9] elseif @thistype == 307 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,9])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,9]))) elseif @thistype == 308 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,9])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,9]))) elseif @thistype == 309 tempc = (real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,9])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,9]))) elseif @thistype == 310 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,9])) + flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,9]))) elseif @thistype == 311 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,9])) - flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,9]))) elseif @thistype == 312 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) * real(thist[@trapmixmatch2,9])) * flip((real(thist[@trapmixmatch1,@traphisindex]) * imag(thist[@trapmixmatch2,9]))) elseif @thistype == 313 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,9])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,9]))) elseif @thistype == 314 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,9])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,9]))) elseif @thistype == 315 tempc = (real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,9])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,9]))) elseif @thistype == 316 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,9])) + flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,9]))) elseif @thistype == 317 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,9])) - flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,9]))) elseif @thistype == 318 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) + real(thist[@trapmixmatch2,9])) * flip((real(thist[@trapmixmatch1,@traphisindex]) + imag(thist[@trapmixmatch2,9]))) elseif @thistype == 319 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,9])) + flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,9]))) elseif @thistype == 320 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,9])) - flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,9]))) elseif @thistype == 321 tempc = (real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,9])) * flip((imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,9]))) elseif @thistype == 322 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,9])) + flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,9]))) elseif @thistype == 323 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,9])) - flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,9]))) elseif @thistype == 324 tempc = (imag(thist[@trapmixmatch1,@traphisindex]) - real(thist[@trapmixmatch2,9])) * flip((real(thist[@trapmixmatch1,@traphisindex]) - imag(thist[@trapmixmatch2,9]))) elseif @thistype == 325 tempc = thist[@trapmixmatch1,@traphisindex]/thist[@trapmixmatch2,1] elseif @thistype == 326 tempc = thist[@trapmixmatch2,1]/thist[@trapmixmatch1,@traphisindex] elseif @thistype == 327 tempc = thist[@trapmixmatch1,@traphisindex]^thist[@trapmixmatch2,1] elseif @thistype == 328 tempc = thist[@trapmixmatch2,1]^thist[@trapmixmatch1,@traphisindex] elseif @thistype == 329 tempc = thist[@trapmixmatch1,@traphisindex]/real(thist[@trapmixmatch2,1]) elseif @thistype == 330 tempc = thist[@trapmixmatch1,@traphisindex]/imag(thist[@trapmixmatch2,1]) elseif @thistype == 331 tempc = thist[@trapmixmatch2,1]/real(thist[@trapmixmatch1,@traphisindex]) elseif @thistype == 332 tempc = thist[@trapmixmatch2,1]/imag(thist[@trapmixmatch1,@traphisindex]) elseif @thistype == 333 tempc = thist[@trapmixmatch1,@traphisindex]^real(thist[@trapmixmatch2,1]) elseif @thistype == 334 tempc = thist[@trapmixmatch1,@traphisindex]^imag(thist[@trapmixmatch2,1]) elseif @thistype == 335 tempc = thist[@trapmixmatch2,1]^real(thist[@trapmixmatch1,@traphisindex]) elseif @thistype == 336 tempc = thist[@trapmixmatch2,1]^imag(thist[@trapmixmatch1,@traphisindex]) elseif @thistype == 337 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,1] + thist[@trapmixmatch2,2] elseif @thistype == 338 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,1] + thist[@trapmixmatch2,2] elseif @thistype == 339 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,1] - thist[@trapmixmatch2,2] elseif @thistype == 340 tempc = -thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,1] + thist[@trapmixmatch2,2] elseif @thistype == 341 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,1] - thist[@trapmixmatch2,2] elseif @thistype == 342 tempc = thist[@trapmixmatch1,@traphisindex] + (thist[@trapmixmatch2,1] * thist[@trapmixmatch2,2]) elseif @thistype == 343 tempc = thist[@trapmixmatch1,@traphisindex] - (thist[@trapmixmatch2,1] * thist[@trapmixmatch2,2]) elseif @thistype == 344 tempc = thist[@trapmixmatch2,1] + (thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,2]) elseif @thistype == 345 tempc = thist[@trapmixmatch2,1] - (thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,2]) elseif @thistype == 346 tempc = thist[@trapmixmatch2,2] + (thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,1]) elseif @thistype == 347 tempc = thist[@trapmixmatch2,2] - (thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,1]) elseif @thistype == 348 tempc = thist[@trapmixmatch1,@traphisindex]/thist[@trapmixmatch2,2] elseif @thistype == 349 tempc = thist[@trapmixmatch2,2]/thist[@trapmixmatch1,@traphisindex] elseif @thistype == 350 tempc = thist[@trapmixmatch1,@traphisindex]^thist[@trapmixmatch2,2] elseif @thistype == 351 tempc = thist[@trapmixmatch2,2]^thist[@trapmixmatch1,@traphisindex] elseif @thistype == 352 tempc = thist[@trapmixmatch1,@traphisindex]/real(thist[@trapmixmatch2,2]) elseif @thistype == 353 tempc = thist[@trapmixmatch1,@traphisindex]/imag(thist[@trapmixmatch2,2]) elseif @thistype == 354 tempc = thist[@trapmixmatch2,2]/real(thist[@trapmixmatch1,@traphisindex]) elseif @thistype == 355 tempc = thist[@trapmixmatch2,2]/imag(thist[@trapmixmatch1,@traphisindex]) elseif @thistype == 356 tempc = thist[@trapmixmatch1,@traphisindex]^real(thist[@trapmixmatch2,2]) elseif @thistype == 357 tempc = thist[@trapmixmatch1,@traphisindex]^imag(thist[@trapmixmatch2,2]) elseif @thistype == 358 tempc = thist[@trapmixmatch2,2]^real(thist[@trapmixmatch1,@traphisindex]) elseif @thistype == 359 tempc = thist[@trapmixmatch2,2]^imag(thist[@trapmixmatch1,@traphisindex]) elseif @thistype == 360 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,2] + thist[@trapmixmatch2,3] elseif @thistype == 361 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,2] + thist[@trapmixmatch2,3] elseif @thistype == 362 tempc = thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,2] - thist[@trapmixmatch2,3] elseif @thistype == 363 tempc = -thist[@trapmixmatch1,@traphisindex] + thist[@trapmixmatch2,2] + thist[@trapmixmatch2,3] elseif @thistype == 364 tempc = thist[@trapmixmatch1,@traphisindex] - thist[@trapmixmatch2,2] - thist[@trapmixmatch2,3] elseif @thistype == 365 tempc = thist[@trapmixmatch1,@traphisindex] + (thist[@trapmixmatch2,2] * thist[@trapmixmatch2,3]) elseif @thistype == 366 tempc = thist[@trapmixmatch1,@traphisindex] - (thist[@trapmixmatch2,2] * thist[@trapmixmatch2,3]) elseif @thistype == 367 tempc = thist[@trapmixmatch2,2] + (thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,3]) elseif @thistype == 368 tempc = thist[@trapmixmatch2,2] - (thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,3]) elseif @thistype == 369 tempc = thist[@trapmixmatch2,3] + (thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,2]) elseif @thistype == 370 tempc = thist[@trapmixmatch2,3] - (thist[@trapmixmatch1,@traphisindex] * thist[@trapmixmatch2,2]) else tempc = tempc endif ; thistype if @thist1blend tempc = @thist1fraction*tempc + thist1comp*thist[1,0] endif ; @thist1blend endif ; @thismode else tempc = tempc endif ; @thistory ; end of trap history code, part 2 if @finalbias tempc = (@fbprod*(tempc + @fbaddend))^@fbexponent endif ; @finalbias if @modflavor ztemp = zinput else ztemp = #z 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 )) elseif ( @trapmode == 41 ) ; product 2 test = cabs(real(ztemp)*real(tempc)+flip(imag(ztemp)*imag(tempc))) elseif ( @trapmode == 42 ) ; quotient 3 test = cabs(real(ztemp)/real(tempc)+flip(imag(ztemp)/imag(tempc))) elseif ( @trapmode == 43 ) ; quotient 4 test = cabs(real(tempc)/real(ztemp)+flip(imag(tempc)/imag(ztemp))) elseif ( @trapmode == 44 ) ; power 3 test = cabs(real(ztemp)^real(tempc)+flip(imag(ztemp)^imag(tempc))) elseif ( @trapmode == 45 ) ; power 4 test = cabs(real(tempc)^real(ztemp)+flip(imag(tempc)^imag(ztemp))) elseif ( @trapmode == 46 ) ; crossproduct test = cabs(real(ztemp)*imag(tempc)+flip(imag(ztemp)*real(tempc))) elseif ( @trapmode == 47 ) ; crossquotient 1 test = cabs(real(ztemp)/imag(tempc)+flip(imag(ztemp)/real(tempc))) elseif ( @trapmode == 48 ) ; crossquotient 2 test = cabs(real(tempc)/imag(ztemp)+flip(imag(tempc)/real(ztemp))) elseif ( @trapmode == 49 ) ; crosspower 1 test = cabs(real(ztemp)^imag(tempc)+flip(imag(ztemp)^real(tempc))) elseif ( @trapmode == 50 ) ; crosspower 2 test = cabs(real(tempc)^imag(ztemp)+flip(imag(tempc)^real(ztemp))) elseif ( @trapmode == 51 ) ; crosssum test = cabs(real(ztemp)+imag(tempc)+flip(imag(ztemp)+real(tempc))) elseif ( @trapmode == 52 ) ; crossdifference 1 test = cabs(real(ztemp)-imag(tempc)+flip(imag(ztemp)-real(tempc))) elseif ( @trapmode == 53 ) ; crossdifference 2 test = cabs(real(ztemp)+imag(tempc)+flip(imag(ztemp)-real(tempc))) elseif ( @trapmode == 54 ) ; manhattan metric test = abs(real(ztemp)-real(tempc))+abs(imag(ztemp)-imag(tempc)) elseif ( @trapmode == 55 ) ; cubic metric test = ((abs(real(ztemp)-real(tempc))^3) + (abs(imag(ztemp)-imag(tempc))^3))^onethird elseif ( @trapmode == 56 ) ; cubic2 test = abs((real(ztemp)-real(tempc))^3 + (imag(ztemp)-imag(tempc))^3)^onethird elseif ( @trapmode == 57 ) ; inverted test = sqrt(abs((real(ztemp)+real(tempc))^2 - (imag(ztemp)+imag(tempc))^2)) elseif ( @trapmode == 58 ) ; quartic metric test = ((real(ztemp)-real(tempc))^4 + (imag(ztemp)-imag(tempc))^4)^onefourth elseif ( @trapmode == 59 ) ; warp1 test = sqrt(abs((real(ztemp))^2-(real(tempc))^2)) + sqrt(abs((imag(ztemp))^2-(imag(tempc))^2)) elseif ( @trapmode == 60 ) ; warp2 test = abs((real(ztemp))^4-(real(tempc))^4 + (imag(ztemp))^4-(imag(tempc))^4)^onefourth elseif ( @trapmode == 61 ) ; warp3 test = log(exp(abs(real(ztemp)-real(tempc))) + exp(abs(imag(ztemp)-imag(tempc)))) elseif ( @trapmode == 62 ) ; warp4 test = exp(log(abs(real(ztemp)-real(tempc))+1) + log(abs(imag(ztemp)-imag(tempc))+1))-1 elseif ( @trapmode == 63 ) ; warp5 test = exp(log(abs(real(ztemp)-real(tempc))) + log(abs(imag(ztemp)-imag(tempc)))) elseif ( @trapmode == 64 ) ; warp6 test = abs(real(ztemp)*real(ztemp)*real(ztemp)-real(tempc)*real(tempc)*real(tempc) + \ imag(ztemp)*imag(ztemp)*imag(ztemp)-imag(tempc)*imag(tempc)*imag(tempc))^onethird elseif ( @trapmode == 65 ) ; warp7 ftemp = real(ztemp) - real(tempc) ftemp2 = imag(ztemp) - imag(tempc) test = sqrt(abs(ftemp*ftemp*ftemp + ftemp2*ftemp2*ftemp2)) endif ; trapmode if ( @whattotrap == 0 ) ; minimum if ( test < tvtrapped ) tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, 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 = #z, 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 = #z, 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 = #z, 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 = #z, 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 = #z, 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 = #z, 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 = #z, 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 = #z, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle elseif test > innerradius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, 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 = #z, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle elseif test > innerradius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, 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 * #z, 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 * #z, 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 = #z, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle elseif test > innerradius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, 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 = #z, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle elseif test < innerradius ; really an outer radius for limits tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, 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 = #z, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle elseif test < innerradius ; really an outer radius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, 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 = #z, 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 = #z, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle endif ; ringstyle endif ; test elseif ( @whattotrap == 15 ) ; Nth #z iterate itercount = itercount + 1 if itercount == @nthiterate tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle endif ; itercount elseif ( @whattotrap == 16 ) ; last #z iterate; just store them all tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, zitrapped = zinput, ttrapped = tempc, trapped = TRUE ziatrapped = tempangle elseif (@whattotrap > 16) && (@whattotrap != 26) ; 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 = #z, 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 = #z, zitrapped2 = zinput, ttrapped2 = tempc, trapped = TRUE ziatrapped2 = tempangle endif ; test elseif ( @whattotrap == 26 ) ; count dips below threshold value if ( test < thresh ) if !@ringstyle tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle, hitcount = hitcount+1 elseif test > innerradius tvtrapped = test, itrapped = iter, zatrapped = zangle, tatrapped = tangle ztrapped = #z, zitrapped = zinput, ttrapped = tempc ziatrapped = tempangle, hitcount = hitcount+1 endif ; ringstyle 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 #z) 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 elseif ( @maskwhatA == 26 ) ; modulus iteration ftemp = itrapped % @itermaskmod elseif ( @maskwhatA == 27 ) ; modulus angle ftemp = zatrapped % @anglemaskmod 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 second mask if ( @maskwhatB == 0 ) ; distance ftemp = cabs( ztrapped - ttrapped ) elseif ( @maskwhatB == 1 ) ; mod distance (distance to zinput, not #z) 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 elseif ( @maskwhatB == 26 ) ; modulus iteration ftemp = itrapped % @itermaskmodB elseif ( @maskwhatB == 27 ) ; modulus angle ftemp = zatrapped % @anglemaskmodB 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 != @maskBmin 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^tex2powers[index] 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 + @texf1offset) * @texf1multiplier elseif index == 1 ztemp2 = ztemp * @texscale ztemp2 = ztemp2 - round(ztemp2) + @texf2offset elseif index == 2 ztemp2 = (ztemp + @texf3offset) * @texf3multiplier elseif index == 3 ztemp2 = (ztemp + @texoffset) * @texf4offset 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 + @fbmcplxoffset elseif @fbminit == "mod z" ztemp2 = zitrapped + @fbmcplxoffset elseif @fbminit == "trap" ztemp2 = ttrapped + @fbmcplxoffset elseif @fbminit == "blend 1" ztemp2 = @fbmzweight*ztrapped + @fbmtrapweight*ttrapped + @fbmcplxoffset elseif @fbminit == "blend 2" ztemp2 = @fbmzweight*zitrapped + @fbmtrapweight*ttrapped + @fbmcplxoffset else ; @fbminit == "blend 3" ztemp2 = @fbmzweight*ztrapped + @fbmtrapweight*zitrapped + @fbmcplxoffset 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 bb = u2 + sx*(v2-u2) bsum = bsum + (ba + sy*(bb-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) 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 == 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 = (sqrt(log(itrapped+1)) + (itrapped % @itermodulus)) / @itermodulus elseif ( @colorby == 18 ) ; modulated iteration 2 (discrete iter) tempcolor = (itrapped % @itermodulus) / @itermodulus elseif ( @colorby == 19 ) ; smooth moditer 1 tempcolor = (sqrt(log(1+log(itrapped+1))) + (itrapped % @itermodulus)) / @itermodulus elseif ( @colorby == 20 ) ; smooth moditer 2 tempcolor = (sqrt(log(1+log(itrapped+1)))/iter + (itrapped % @itermodulus)) / @itermodulus elseif ( @colorby == 21 ) ; count if @countmode == "raw" tempcolor = hitcount*iter/#maxiter elseif @countmode == "maxiter" tempcolor = log(log(iter)+1)*hitcount/log(#maxiter) elseif @countmode == "numiter" tempcolor = log(log(iter)*hitcount+1) elseif @countmode == "raw 2" tempcolor = log(hitcount+1)*log(iter) elseif @countmode == "raw 3" tempcolor = log(hitcount+1)*iter/#maxiter endif ; @countmode elseif ( @colorby == 22 ) ; modulus angle tempcolor = (zatrapped % @anglemodulus) / @anglemodulus endif ; colorby if @offsetcolor tempcolor = abs(tempcolor - @coloroffset) endif ; @offsetcolor if @offsetcolor2 tempcolor = abs(abs(tempcolor - @coloroffset2) - @coloroffset2) endif ; @offsetcolor2 tempcolor = tempcolor * @stretchcolor ; 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)) elseif @colorwarp == 135 ftemp = tempcolor * exp(-1/(tempcolor^2)) elseif @colorwarp == 136 ftemp = log(1+tempcolor) else ; @colorwarp == 137 ftemp = log(1+log(1+tempcolor)) endif ; tempcolorwarp #index = abs(ftemp) endif ; solidset else if @coloruntrappedregion #index = @untrappedcolor else #solid = TRUE endif ; @coloruntrappedregion endif ; itrapped default: title = "Trapestry" heading caption = "Primary Settings" endheading 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" "count" 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'. Use 'count' with parameter 'Color By?' = 'count' too" 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 )) || (@whattotrap == 26)) && @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 )) || (@whattotrap == 26)) && @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 )) || \ (@whattotrap == 26)) && @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 )) || (@whattotrap == 26)) && @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 )) || \ (@whattotrap == 26)) && @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 )) || \ (@whattotrap == 26)) && @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 )) || \ (@whattotrap == 26)) && @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" \ "product 2" "quotient 3" "quotient 4" "power 3" "power 4" \ "crossproduct" "crossquotient 1" "crossquotient 2" \ "crosspower 1" "crosspower 2" "crosssum" "crossdifference 1" \ "crossdifference 2" "manhattan metric" "cubic metric" \ "cubic2" "inverted" "quartic metric" "warp1" "warp2" "warp3" "warp4" \ "warp5" "warp6" "warp7" 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" \ "mod iter" "discrete iter" "smooth moditer 1" "smooth moditer 2" "count" \ "modulus angle" default = 4 hint = "Criterion for computing color index; index will be based on the value of this variable. \ Use 'count' with parameter 'Trap What?' = 'count' too" visible = @showprimaries endparam param itermodulus caption = "Iteration Modulus" default = 5 min = 1 hint = "If 'Color By?' is set to 'mod iter' or 'discrete iter', than this parameter \ sets the modulus (number of color ranges for 'mod iter', number of individual \ colors for 'discrete iter')" visible = @showprimaries && (( @colorby == "mod iter" ) || ( @colorby == "discrete iter" ) \ || ( @colorby == "smooth moditer 1" ) || ( @colorby == "smooth moditer 2" )) endparam param anglemodulus caption = "Angle Modulus" default = 0.78539816339744830961566084581988 ; pi/4 min = 1.0e-9 hint = "If 'Color By?' is set to 'mod angle', than this parameter \ sets the modulus (number of color ranges)" visible = @showprimaries && ( @colorby == 22 ) endparam param countmode caption = "Count Mode" enum = "raw" "maxiter" "numiter" "raw 2" "raw 3" default = 2 hint = "If 'Color By?' is set to 'count', than this parameter \ determines how the hit count is normalized. Use with parameters 'Trap What?' \ and 'Color By?' set to 'count'" visible = @showprimaries && @colorby == "count" endparam param overallscale caption = "Overall Scale" default = 1.0 hint = "This parameter fixes the overall size of all traps" visible = @showprimaries endparam param showprimaries caption = "Show Primary Params?" default = TRUE endparam heading caption = "Trap Function Settings" endheading 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 = 0 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" "splice 7" "splice 8" "splice 9" "splice 10" "splice 11" \ "splice 12" "nearest" "farthest" "nearest 2" "farthest 2" \ "largest" "smallest" "A^2+B^2" \ "A^2-B^2" "B^2-A^2" "A^3+B^3" "A^3-B^3" "B^3-A^3" "cyclical" \ "cyclical 2" "|A+B|" "|A-B|" "|A^2+B^2|" "|A^2-B^2|" \ "|A^3+B^3|" "|A^3-B^3|" "real(z)" "real(z) 2" "real(z) 3" \ "real(z) 4" "imag(z)" "imag(z) 2" "imag(z) 3" "imag(z) 4" \ "quotient 4" "quotient 5" "quotient 6" "quotient 7" "quotient 8" \ "quotient 9" "quotient 10" "quotient 11" "quotient 12" "quotient 13" \ "quotient 14" "exponential 3" "exponential 4" "exponential 5" \ "exponential 6" "exponential 7" "exponential 8" "exponential 9" "exponential 10" \ "exponential 11" "exponential 12" "exponential 13" "exponential 14" \ "trap 1 only" "trap 2 only" hint = "This setting determines how the two traps will be merged. Some of \ the mode differences only show up if at least some of the various Z or \ front end modifiers, modulator functions, or history settings are enabled" 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") && !@altcombo endparam param trapcycle caption = "Trap Cycle Length" default = 2 min = 2 hint = "If 'Trap Combination' is set to 'cyclical' or 'cyclical 2', then this \ parameter determines the cycle length. A cycle length of 2 means the traps \ alternate according to iteration" 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") && ((@trapcombo == "cyclical") || (@trapcombo == "cyclical 2")) && !@altcombo 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") && !@altcombo 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") && !@altcombo 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") && !@altcombo endparam param altcombo caption = "Alternative TrapCombos?" default = FALSE hint = "If enabled, then the selected trap combination mode operates on the individual \ distances, rather than the two trap points" 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 alttrapcombo caption = "Alt Combo Mode" enum = "average" "sum" "difference" "difference2" "product" "geom. mean" "quotient" \ "quotient2" "exponential" "exponential2" "splice1" "splice2" "splice3" \ "splice4" "splice5" "splice6" "smallest" "largest" default = 0 hint = "If 'Alternative TrapCombos' is enabled, then this setting determines how the two \ trap distances are combined" 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") && @altcombo 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)^m*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))" "log(a) B" \ "log(log(a)) B" "Xarctangent" "Xsine" "Xparabola" "Xampersand" \ "Xampersand2" "Xhyperbola" "Xbifolium" "Xbow" "Xbean" \ "Xdulcimer" "sin+tan" "sin+cot" "sin+sec" "sin+csc" \ "cos+tan" "cos+cot" "cos+sec" "cos+csc" "cos*cot" \ "sec*csc" "sin^n * cos^m" "sin^n + cos^m" "sin^n + cos^n" "cos(1/a)^n" \ "sin(a)+sin(1/a)" "log(a)e^a" "log(a)e^a B" "log(1/a) B" "1/log(a) B" \ "alog(a) B" "log(a)^n B" "sin(a)log(a) B" "cos*log B" "a/log(a) B" \ "log(a)/a B" "tan*log" "tan*log B" "e^(sin+cos)" "e^(sin+tan)" \ "sin+e^(sin)" "log(sin+cos)" "sin(sin)" "sin+tan(sin)" "Gielis' curve" \ "sin+e^tan" "tan+e^sin" "tan+e^tan" "tan+tan(sin)" "tan+sin(tan)" \ "sin+sin(tan)" "sin^m + tan^n" "hyperbola 2" "semicubical parabola 2" "cubical parabola 2" \ "bean curve" "butterfly 1" "butterfly 2" "teardrop (x)" "teardrop (y)" \ "Ddumbbell" "Drose" "Plateau curve (x)" "Plateau curve (y)" "hyperbola3 (x)" \ "hyperbola3 (y)" 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) ) \ && (@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)) \ || ((@func1 >= 179)) ) && (@f1scale != 0) endparam param const4f1 caption = "4th Func1 Constant" default = 1.0 hint = "If four constants are needed in a function formula, this parameter \ sets the fourth one. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@traptype == "functions") || (@traptype == "mixed 1") || (@traptype == "mixed 2")) && \ ( (@func1 == 82) || (@func1 == 201) || (@func1 == 202) || (@func1 >= 218) ) && (@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)^m*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))" "log(a) B" \ "log(log(a)) B" "Xarctangent" "Xsine" "Xparabola" "Xampersand" \ "Xampersand2" "Xhyperbola" "Xbifolium" "Xbow" "Xbean" \ "Xdulcimer" "sin+tan" "sin+cot" "sin+sec" "sin+csc" \ "cos+tan" "cos+cot" "cos+sec" "cos+csc" "cos*cot" \ "sec*csc" "sin^n * cos^m" "sin^n + cos^m" "sin^n + cos^n" "cos(1/a)^n" \ "sin(a)+sin(1/a)" "log(a)e^a" "log(a)e^a B" "log(1/a) B" "1/log(a) B" \ "alog(a) B" "log(a)^n B" "sin(a)log(a) B" "cos*log B" "a/log(a) B" \ "log(a)/a B" "tan*log" "tan*log B" "e^(sin+cos)" "e^(sin+tan)" \ "sin+e^(sin)" "log(sin+cos)" "sin(sin)" "sin+tan(sin)" "Gielis' curve" \ "sin+e^tan" "tan+e^sin" "tan+e^tan" "tan+tan(sin)" "tan+sin(tan)" \ "sin+sin(tan)" "sin^m + tan^n" "hyperbola 2" "semicubical parabola 2" "cubical parabola 2" \ "bean curve" "butterfly 1" "butterfly 2" "teardrop (x)" "teardrop (y)" \ "Ddumbbell" "Drose" "Plateau curve (x)" "Plateau curve (y)" "hyperbola3 (x)" \ "hyperbola3 (y)" 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) ) \ && (@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)) \ || (@func2 >= 179) ) && (@f2scale != 0) endparam param const4f2 caption = "4th Func2 Constant" default = 1.0 hint = "If four constants are needed in a function formula, this parameter \ sets the fourth one. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@traptype == "functions") || ((@coordtype == "Parametric") && \ (@traptype != "oscillators")) || ((@coordtype == "Mixed") && (@traptype \ == "mixed 2")) ) && ( (@func2 == 82) || (@func2 == 201) || (@func2 == 202) || \ (@func2 >= 218) ) && (@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)^m*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))" "log(a) B" \ "log(log(a)) B" "Xarctangent" "Xsine" "Xparabola" "Xampersand" \ "Xampersand2" "Xhyperbola" "Xbifolium" "Xbow" "Xbean" \ "Xdulcimer" "sin+tan" "sin+cot" "sin+sec" "sin+csc" \ "cos+tan" "cos+cot" "cos+sec" "cos+csc" "cos*cot" \ "sec*csc" "sin^n * cos^m" "sin^n + cos^m" "sin^n + cos^n" "cos(1/a)^n" \ "sin(a)+sin(1/a)" "log(a)e^a" "log(a)e^a B" "log(1/a) B" "1/log(a) B" \ "alog(a) B" "log(a)^n B" "sin(a)log(a) B" "cos*log B" "a/log(a) B" \ "log(a)/a B" "tan*log" "tan*log B" "e^(sin+cos)" "e^(sin+tan)" \ "sin+e^(sin)" "log(sin+cos)" "sin(sin)" "sin+tan(sin)" "Gielis' curve" \ "sin+e^tan" "tan+e^sin" "tan+e^tan" "tan+tan(sin)" "tan+sin(tan)" \ "sin+sin(tan)" "sin^m + tan^n" "hyperbola 2" "semicubical parabola 2" "cubical parabola 2" \ "bean curve" "butterfly 1" "butterfly 2" "teardrop (x)" "teardrop (y)" \ "Ddumbbell" "Drose" "Plateau curve (x)" "Plateau curve (y)" "hyperbola3 (x)" \ "hyperbola3 (y)" 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) ) \ && (@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)) \ || (@func3 >= 179) ) && (@f3scale != 0) endparam param const4f3 caption = "4th Func3 Constant" default = 1.0 hint = "If four constants are needed in a function formula, this parameter \ sets the fourth one. Affects the shape of the trap" visible = @showtrapfuncs && \ (((@coordtype == "Parametric") && \ (@traptype == "functions")) || ((@coordtype == "Mixed") && (@traptype \ == "functions")) ) && ( (@func3 == 82) || (@func3 == 201) || (@func3 == 202) || \ (@func3 >= 218) ) && (@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)^m*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))" "log(a) B" \ "log(log(a)) B" "Xarctangent" "Xsine" "Xparabola" "Xampersand" \ "Xampersand2" "Xhyperbola" "Xbifolium" "Xbow" "Xbean" \ "Xdulcimer" "sin+tan" "sin+cot" "sin+sec" "sin+csc" \ "cos+tan" "cos+cot" "cos+sec" "cos+csc" "cos*cot" \ "sec*csc" "sin^n * cos^m" "sin^n + cos^m" "sin^n + cos^n" "cos(1/a)^n" \ "sin(a)+sin(1/a)" "log(a)e^a" "log(a)e^a B" "log(1/a) B" "1/log(a) B" \ "alog(a) B" "log(a)^n B" "sin(a)log(a) B" "cos*log B" "a/log(a) B" \ "log(a)/a B" "tan*log" "tan*log B" "e^(sin+cos)" "e^(sin+tan)" \ "sin+e^(sin)" "log(sin+cos)" "sin(sin)" "sin+tan(sin)" "Gielis' curve" \ "sin+e^tan" "tan+e^sin" "tan+e^tan" "tan+tan(sin)" "tan+sin(tan)" \ "sin+sin(tan)" "sin^m + tan^n" "hyperbola 2" "semicubical parabola 2" "cubical parabola 2" \ "bean curve" "butterfly 1" "butterfly 2" "teardrop (x)" "teardrop (y)" \ "Ddumbbell" "Drose" "Plateau curve (x)" "Plateau curve (y)" "hyperbola3 (x)" \ "hyperbola3 (y)" 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) ) \ && (@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)) \ || (@func4 >= 179) ) && (@f4scale != 0) endparam param const4f4 caption = "4th Func4 Constant" default = 1.0 hint = "If four constants are needed in a function formula, this parameter \ sets the fourth one. Affects the shape of the trap" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "functions")) && \ ( (@func4 == 82) || (@func4 == 201) || (@func4 == 202) || (@func4 >= 218) ) && (@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 oscrecip11 caption = "Set A Osc 1 Reciprocal?" default = FALSE hint = "If enabled, Set A Oscillator 1 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) endparam param oscpower11 caption = "Set A Osc 1 Power?" default = FALSE hint = "If enabled, Set A Oscillator 1 result will be raised to the power set by \ 'Set A Osc 1 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) endparam param oscexponent11 caption = "Set A Osc 1 Exponent" default = 2.0 hint = "If 'Set A Osc 1 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && @oscpower11 endparam param osc11sin caption = "SetA Osc1 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be used \ for Set A's first oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) endparam param oscfunc11 caption = "Set A Osc 1 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set A Osc 1 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && (@traptype != "functions") && (@osc11amp != 0.0) && @osc11sin endparam param oscoperation11 caption = "Set A Osc 1 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators" visible = FALSE ; the operator is irrelevant for the first oscillator of each set 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 oscrecip12 caption = "Set A Osc 2 Reciprocal?" default = FALSE hint = "If enabled, Set A Oscillator 2 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) endparam param oscpower12 caption = "Set A Osc 2 Power?" default = FALSE hint = "If enabled, Set A Oscillator 2 result will be raised to the power set by \ 'Set A Osc 2 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) endparam param oscexponent12 caption = "Set A Osc 2 Exponent" default = 2.0 hint = "If 'Set A Osc 2 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && @oscpower12 endparam param osc12sin caption = "SetA Osc2 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be used \ for Set A's second oscillator" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) endparam param oscfunc12 caption = "Set A Osc 2 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set A Osc 2 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && (@traptype != "functions") && (@osc12amp != 0.0) && @osc12sin \ && (@osc11amp != 0.0) endparam param oscoperation12 caption = "Set A Osc 2 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" visible = @showtrapfuncs && (@traptype != "functions") && (@osc12amp != 0.0) && (@osc11amp != 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 oscrecip13 caption = "Set A Osc 3 Reciprocal?" default = FALSE hint = "If enabled, Set A Oscillator 3 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) endparam param oscpower13 caption = "Set A Osc 3 Power?" default = FALSE hint = "If enabled, Set A Oscillator 3 result will be raised to the power set by \ 'Set A Osc 3 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) endparam param oscexponent13 caption = "Set A Osc 3 Exponent" default = 2.0 hint = "If 'Set A Osc 3 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) && @oscpower13 endparam param osc13sin caption = "SetA Osc3 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be used \ for Set A's third oscillator" visible = @showtrapfuncs && (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) endparam param oscfunc13 caption = "Set A Osc 3 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set A Osc 3 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && (@traptype != "functions") && (@osc13amp != 0.0) && @osc13sin \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) endparam param oscoperation13 caption = "Set A Osc 3 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscrecip14 caption = "Set A Osc 4 Reciprocal?" default = FALSE hint = "If enabled, Set A Oscillator 4 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) && (@osc14amp != 0.0) endparam param oscpower14 caption = "Set A Osc 4 Power?" default = FALSE hint = "If enabled, Set A Oscillator 4 result will be raised to the power set by \ 'Set A Osc 4 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) && (@osc14amp != 0.0) endparam param oscexponent14 caption = "Set A Osc 4 Exponent" default = 2.0 hint = "If 'Set A Osc 4 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ (@traptype != "functions") \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) && (@osc14amp != 0.0) && @oscpower14 endparam param osc14sin caption = "SetA Osc4 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be 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 oscfunc14 caption = "Set A Osc 4 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set A Osc 4 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && (@traptype != "functions") && (@osc14amp != 0.0) && @osc14sin \ && (@osc11amp != 0.0) && (@osc12amp != 0.0) && (@osc13amp != 0.0) endparam param oscoperation14 caption = "Set A Osc 4 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscsetreciprocal1 caption = "Osc SetA Reciprocal" default = FALSE hint = "If enabled, the reciprocal of the oscillator combination result is used" 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 oscrecip21 caption = "Set B Osc 1 Reciprocal?" default = FALSE hint = "If enabled, Set B Oscillator 1 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && (@osc21amp != 0.0) endparam param oscpower21 caption = "Set B Osc 1 Power?" default = FALSE hint = "If enabled, Set B Oscillator 1 result will be raised to the power set by \ 'Set B Osc 1 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && (@osc21amp != 0.0) endparam param oscexponent21 caption = "Set B Osc 1 Exponent" default = 2.0 hint = "If 'Set B Osc 1 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && (@osc21amp != 0.0) && @oscpower21 endparam param osc21sin caption = "SetB Osc1 Sine?" default = TRUE hint = "If enabled, then functions other than cosine can be 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 oscfunc21 caption = "Set B Osc 1 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set B Osc 1 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ( ((@coordtype == "Polar") && (@traptype == "oscillators")) || \ ((@coordtype == "Parametric") && (@traptype != "functions")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "mixed 1")) ) \ && (@osc21amp != 0.0) && @osc21sin endparam param oscoperation21 caption = "Set B Osc 1 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators" visible = FALSE ; the operator is irrelevant for the first oscillator of each set 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 oscrecip22 caption = "Set B Osc 2 Reciprocal?" default = FALSE hint = "If enabled, Set B Oscillator 2 will use the reciprocal of the angular argument" 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 oscpower22 caption = "Set B Osc 2 Power?" default = FALSE hint = "If enabled, Set B Oscillator 2 result will be raised to the power set by \ 'Set B Osc 2 Exponent' before being combined with the other oscillators" 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 oscexponent22 caption = "Set B Osc 2 Exponent" default = 2.0 hint = "If 'Set B Osc 2 Power' is enabled, this parameter sets the exponent that will be used" 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) && @oscpower22 endparam param osc22sin caption = "SetB Osc2 Sine?" default = TRUE hint = "If enabled, then functions other than cosine can be 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 oscfunc22 caption = "Set B Osc 2 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set B Osc 2 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" 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) && @osc22sin endparam param oscoperation22 caption = "Set B Osc 2 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscrecip23 caption = "Set B Osc 3 Reciprocal?" default = FALSE hint = "If enabled, Set B Oscillator 3 will use the reciprocal of the angular argument" 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 oscpower23 caption = "Set B Osc 3 Power?" default = FALSE hint = "If enabled, Set B Oscillator 3 result will be raised to the power set by \ 'Set B Osc 3 Exponent' before being combined with the other oscillators" 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 oscexponent23 caption = "Set B Osc 3 Exponent" default = 2.0 hint = "If 'Set B Osc 3 Power' is enabled, this parameter sets the exponent that will be used" 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) && @oscpower23 endparam param osc23sin caption = "SetB Osc3 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be 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 oscfunc23 caption = "Set B Osc 3 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set B Osc 3 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" 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) && @osc23sin endparam param oscoperation23 caption = "Set B Osc 3 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscrecip24 caption = "Set B Osc 4 Reciprocal?" default = FALSE hint = "If enabled, Set B Oscillator 4 will use the reciprocal of the angular argument" 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 oscpower24 caption = "Set B Osc 4 Power?" default = FALSE hint = "If enabled, Set B Oscillator 4 result will be raised to the power set by \ 'Set B Osc 4 Exponent' before being combined with the other oscillators" 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 oscexponent24 caption = "Set B Osc 4 Exponent" default = 2.0 hint = "If 'Set B Osc 4 Power' is enabled, this parameter sets the exponent that will be used" 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) \ && @oscpower24 endparam param osc24sin caption = "SetB Osc4 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be 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 oscfunc24 caption = "Set B Osc 4 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set B Osc 4 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" 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) \ && @osc24sin endparam param oscoperation24 caption = "Set B Osc 4 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscsetreciprocal2 caption = "Osc SetB Reciprocal" default = FALSE hint = "If enabled, the reciprocal of the oscillator combination result is used" 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 oscrecip31 caption = "Set C Osc 1 Reciprocal?" default = FALSE hint = "If enabled, Set C Oscillator 1 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) endparam param oscpower31 caption = "Set C Osc 1 Power?" default = FALSE hint = "If enabled, Set C Oscillator 1 result will be raised to the power set by \ 'Set C Osc 1 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) endparam param oscexponent31 caption = "Set C Osc 1 Exponent" default = 2.0 hint = "If 'Set C Osc 1 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && @oscpower31 endparam param osc31sin caption = "SetC Osc1 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be used \ for Set C's first oscillator" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) endparam param oscfunc31 caption = "Set C Osc 1 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set C Osc 1 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && @osc31sin endparam param oscoperation31 caption = "Set C Osc 1 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators" visible = FALSE ; the operator is irrelevant for the first oscillator of each set 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 oscrecip32 caption = "Set C Osc 2 Reciprocal?" default = FALSE hint = "If enabled, Set C Oscillator 2 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) endparam param oscpower32 caption = "Set C Osc 2 Power?" default = FALSE hint = "If enabled, Set C Oscillator 2 result will be raised to the power set by \ 'Set C Osc 2 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) endparam param oscexponent32 caption = "Set C Osc 2 Exponent" default = 2.0 hint = "If 'Set C Osc 2 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && @oscpower32 endparam param osc32sin caption = "SetC Osc2 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be 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 oscfunc32 caption = "Set C Osc 2 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set C Osc 2 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && @osc32sin endparam param oscoperation32 caption = "Set C Osc 2 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscrecip33 caption = "Set C Osc 3 Reciprocal?" default = FALSE hint = "If enabled, Set C Oscillator 3 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) endparam param oscpower33 caption = "Set C Osc 3 Power?" default = FALSE hint = "If enabled, Set C Oscillator 3 result will be raised to the power set by \ 'Set C Osc 3 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) endparam param oscexponent33 caption = "Set C Osc 3 Exponent" default = 2.0 hint = "If 'Set C Osc 3 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) && @oscpower33 endparam param osc33sin caption = "SetC Osc3 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be 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 oscfunc33 caption = "Set C Osc 3 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set C Osc 3 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) && @osc33sin endparam param oscoperation33 caption = "Set C Osc 3 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscrecip34 caption = "Set C Osc 4 Reciprocal?" default = FALSE hint = "If enabled, Set C Oscillator 4 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) && (@osc34amp != 0.0) endparam param oscpower34 caption = "Set C Osc 4 Power?" default = FALSE hint = "If enabled, Set C Oscillator 4 result will be raised to the power set by \ 'Set C Osc 4 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) && (@osc34amp != 0.0) endparam param oscexponent34 caption = "Set C Osc 4 Exponent" default = 2.0 hint = "If 'Set C Osc 4 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) && (@osc34amp != 0.0) \ && @oscpower34 endparam param osc34sin caption = "SetC Osc4 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be 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 oscfunc34 caption = "Set C Osc 4 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set C Osc 4 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ( ((@coordtype == "Parametric") && (@traptype == "oscillators")) || \ ((@coordtype == "Mixed") && (@traptype == "oscillators")) ) \ && (@osc31amp != 0.0) && (@osc32amp != 0.0) && (@osc33amp != 0.0) && (@osc34amp != 0.0) \ && @osc34sin endparam param oscoperation34 caption = "Set C Osc 4 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscsetreciprocal3 caption = "Osc SetC Reciprocal" default = FALSE hint = "If enabled, the reciprocal of the oscillator combination result is used" 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 oscrecip41 caption = "Set D Osc 1 Reciprocal?" default = FALSE hint = "If enabled, Set D Oscillator 1 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) endparam param oscpower41 caption = "Set D Osc 1 Power?" default = FALSE hint = "If enabled, Set D Oscillator 1 result will be raised to the power set by \ 'Set D Osc 1 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) endparam param oscexponent41 caption = "Set D Osc 1 Exponent" default = 2.0 hint = "If 'Set D Osc 1 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && @oscpower41 endparam param osc41sin caption = "SetD Osc1 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be used \ for Set D's first oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) endparam param oscfunc41 caption = "Set D Osc 1 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set D Osc 1 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && @osc41sin endparam param oscoperation41 caption = "Set D Osc 1 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators" visible = FALSE ; the operator is irrelevant for the first oscillator of each set 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 oscrecip42 caption = "Set D Osc 2 Reciprocal?" default = FALSE hint = "If enabled, Set D Oscillator 2 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) endparam param oscpower42 caption = "Set D Osc 2 Power?" default = FALSE hint = "If enabled, Set D Oscillator 2 result will be raised to the power set by \ 'Set D Osc 2 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) endparam param oscexponent42 caption = "Set D Osc 2 Exponent" default = 2.0 hint = "If 'Set D Osc 2 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && @oscpower42 endparam param osc42sin caption = "SetD Osc2 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be used \ for Set D's second oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) endparam param oscfunc42 caption = "Set D Osc 2 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set D Osc 2 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && @osc42sin endparam param oscoperation42 caption = "Set D Osc 2 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscrecip43 caption = "Set D Osc 3 Reciprocal?" default = FALSE hint = "If enabled, Set D Oscillator 3 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) endparam param oscpower43 caption = "Set D Osc 3 Power?" default = FALSE hint = "If enabled, Set D Oscillator 3 result will be raised to the power set by \ 'Set D Osc 3 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) endparam param oscexponent43 caption = "Set D Osc 3 Exponent" default = 2.0 hint = "If 'Set D Osc 3 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) && @oscpower43 endparam param osc43sin caption = "SetD Osc3 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be used \ for Set D's third oscillator" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) endparam param oscfunc43 caption = "Set D Osc 3 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set D Osc 3 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) && @osc43sin endparam param oscoperation43 caption = "Set D Osc 3 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 oscrecip44 caption = "Set D Osc 4 Reciprocal?" default = FALSE hint = "If enabled, Set D Oscillator 4 will use the reciprocal of the angular argument" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) && (@osc44amp != 0.0) endparam param oscpower44 caption = "Set D Osc 4 Power?" default = FALSE hint = "If enabled, Set D Oscillator 4 result will be raised to the power set by \ 'Set D Osc 4 Exponent' before being combined with the other oscillators" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) && (@osc44amp != 0.0) endparam param oscexponent44 caption = "Set D Osc 4 Exponent" default = 2.0 hint = "If 'Set D Osc 4 Power' is enabled, this parameter sets the exponent that will be used" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) && (@osc44amp != 0.0) \ && @oscpower44 endparam param osc44sin caption = "SetD Osc4 Sine?" default = FALSE hint = "If enabled, then functions other than cosine can be 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 oscfunc44 caption = "Set D Osc 4 Function" enum = "sine" "tan" "exp" "sec" "csc" "cotan" "log" "none---angle only" default = 0 hint = "If 'Set D Osc 4 Sine' is enabled, than this parameter determines which \ function is used in place of the cosine function" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) && (@osc42amp != 0.0) && (@osc43amp != 0.0) && (@osc44amp != 0.0) \ && @osc44sin endparam param oscoperation44 caption = "Set D Osc 4 Operator" enum = "+" "-" "*" "/" "^" "--" "//" "^^" default = 0 hint = "This parameter determines how this oscillator is combined with the previous \ oscillators of the current set" 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 param oscsetreciprocal4 caption = "Osc SetD Reciprocal" default = FALSE hint = "If enabled, the reciprocal of the oscillator combination result is used" visible = @showtrapfuncs && \ ((@coordtype == "Parametric") && (@traptype == "oscillators")) \ && (@osc41amp != 0.0) endparam param showtrapfuncs caption = "Show Trap Func Params?" default = TRUE endparam heading caption = "History Settings" $ifdef VER40 expanded = FALSE $endif endheading 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 = @showhistory endparam param hismode caption = "History Mode" default = 0 enum = "original" "alternative" "both" hint = "Determines whether history modifications are carried out before (original) \ or after (alternative) other #z initializations are performed. If no other \ #z initializations are enabled (such as modifiers 'Z Variants', 'Z Initialization', \ or any of the Z, front end real, or front end imag modulator functions), \ then 'original' mode will be the same as 'alternative' mode" visible = @history && @showhistory endparam param histype caption = "History Type" default = 1 min = 0 max = 370 hint = "Determines how previous z's are used for trapping, for 'History Mode' = \ 'original'. Range is an integer from 0 (no previous z used) to 370. \ Types 1-324 recur in sets of 36 (types 1-36 use previous z, 37-72 use 2nd \ previous z, etc). Types 325-370 use three generations of z" visible = @history && @showhistory && (@hismode == "original" || @hismode == "both") endparam param histype1index caption = "History 1 Index" default = 0 min = 0 max = 9 hint = "Determines how previous z's are used for trapping, for 'History Mode' = \ 'original'. Range is an integer from 0 to 9" visible = @history && @showhistory && (@hismode == "original" || @hismode == "both") endparam param zmixmatch1 caption = "Z MixMatch1" default = 0 min = 0 max = 1 hint = "Affects whether #z or modified z is used in the original history procedure. Results \ may not be apparent unless some of the Z modifiers, Z initialization, or front \ end modulator functions are also turned on. Options are 0 (#z) or 1 (modified z)" visible = @history && @showhistory && (@hismode == "original" || @hismode == "both") endparam param zmixmatch2 caption = "Z MixMatch2" default = 0 min = 0 max = 1 hint = "Affects whether #z or modified z is used in the original history procedure. Results \ may not be apparent unless some of the Z modifiers, Z initialization, or front \ end modulator functions are also turned on. Options are 0 (#z) or 1 (modified z)" visible = @history && @showhistory && (@hismode == "original" || @hismode == "both") endparam param zhist1blend caption = "Blend Original?" default = FALSE hint = "If 'History Mode' is set to 'original' or 'both', then enabling this option \ mixes in a portion of the unmodified #z with the history-modified z. The fraction \ of modified z blended in is set by parameter 'History Fraction'" visible = @history && @showhistory && (@hismode == "original" || @hismode == "both") endparam param zhist1fraction caption = "History Fraction" default = 0.1 hint = "If 'History Mode' is set to 'original' or 'both' and 'Blend Original' is enabled, \ then this is the fraction of modified z mixed in with the history-unmodified #z" visible = @history && @showhistory && (@hismode == "original" || @hismode == "both") && \ @zhist1blend endparam param histype2 caption = "History Type 2" default = 1 min = 0 max = 370 hint = "Determines how previous z's are used for trapping, for 'History Mode' = \ 'alternative'. Range is an integer from 0 (no previous z used) to 370. \ Types 1-324 recur in sets of 36 (types 1-36 use previous z, 37-72 use 2nd \ previous z, etc). Types 325-370 use three generations of z" visible = @history && @showhistory && (@hismode == "alternative" || @hismode == "both") endparam param histype2index caption = "History 2 Index" default = 0 min = 0 max = 9 hint = "Determines how previous z's are used for trapping, for 'History Mode' = \ 'alternative'. Range is an integer from 0 to 9" visible = @history && @showhistory && (@hismode == "alternative" || @hismode == "both") endparam param zmixmatch3 caption = "Z MixMatch3" default = 0 min = 0 max = 1 hint = "Affects whether #z or modified z is used in the alternative history procedure. Results \ may not be apparent unless some of the Z modifiers, Z initialization, or front \ end modulator functions are also turned on. Options are 0 (#z) or 1 (modified z)" visible = @history && @showhistory && (@hismode == "alternative" || @hismode == "both") endparam param zmixmatch4 caption = "Z MixMatch4" default = 1 min = 0 max = 1 hint = "Affects whether #z or modified z is used in the alternative history procedure. Results \ may not be apparent unless some of the Z modifiers, Z initialization, or front \ end modulator functions are also turned on. Options are 0 (#z) or 1 (modified z)" visible = @history && @showhistory && (@hismode == "alternative" || @hismode == "both") endparam param zhist2blend caption = "Blend Alternative?" default = FALSE hint = "If 'History Mode' is set to 'alternative' or 'both', then enabling this option \ mixes in a portion of the unmodified #z with the alternatively history-modified z. \ The fraction of modified z blended in is set by parameter 'History2 Fraction'" visible = @history && @showhistory && (@hismode == "alternative" || @hismode == "both") endparam param zhist2fraction caption = "History2 Fraction" default = 0.1 hint = "If 'History Mode' is set to 'alternative' or 'both' and 'Blend Alternative' is enabled, \ then this is the fraction of modified z mixed in with the history-unmodified #z" visible = @history && @showhistory && (@hismode == "alternative" || @hismode == "both") && \ @zhist2blend endparam param fixaltbug caption = "Fix Alt Bug?" default = TRUE hint = "Early versions of this formula with 'History Mode' set to 'alternative' contained \ a bug, which has been corrected. If you used that setting in an image and have compatibility \ problems, disable this parameter to get the original version of Trapestry" visible = @history && @showhistory && @hismode == "alternative" endparam param thistory caption = "Enable Trap History?" default = FALSE hint = "If enabled, previous generations of the trap point are also used to \ determine the new, current iteration trap point. Because of the \ implementation, the 'Trap History' effect is often more effective if \ one of the other trap modifiers is also turned on, such as 'Trap Variants', \ 'T Operator', 'T Waviness', or the trap or back end modulator functions" visible = @showhistory endparam param thismode caption = "Trap Hist Mode" default = 0 enum = "original" "alternative" "both" hint = "Determines whether trap history modifications are carried out before (alternative) \ or after (original) other trap modifiers are performed. If no other \ trap options are enabled (such as trap operator modifiers, 'Trap Variants', 'Trap Transmute', \ or any of the back end real or back end imag modulator functions), \ then 'original' mode will be the same as 'alternative' mode" visible = @thistory && @showhistory endparam param thistype caption = "Trap History Type" default = 1 min = 0 max = 370 hint = "Determines how previous trap generations are used to determine the new trap point \ for 'Trap Hist Mode' = 'original'. Range is an integer from 0 (no previous trap \ point used) to 370. \ Types 1-324 recur in sets of 36 (types 1-36 use previous trap, 37-72 use 2nd \ previous trap, etc). Types 325-370 use three generations of trapped point" visible = @thistory && @showhistory && ((@thismode == "original") || (@thismode == "both")) endparam param traphisindex caption = "Trap History Index" default = 0 min = 0 max = 9 hint = "Determines how previous trap generations are used to determine the new trap point \ for 'Trap Hist Mode' = 'original'. Range is an integer from 0 to 9" visible = @thistory && @showhistory && ((@thismode == "original") || (@thismode == "both")) endparam param trapmixmatch1 caption = "T MixMatch1" default = 1 min = 0 max = 1 hint = "Affects whether unmodified or modified trap point is used in the original history procedure. Results \ may not be apparent unless some of the trap modifiers, 'Trap Transmute', or back \ end modulator functions are also turned on. Options are 0 or 1" visible = @thistory && @showhistory && (@thismode == "original" || @thismode == "both") endparam param trapmixmatch2 caption = "T MixMatch2" default = 0 min = 0 max = 1 hint = "Affects whether unmodified or modified trap point is used in the original history procedure. Results \ may not be apparent unless some of the trap modifiers, 'Trap Transmute', or back \ end modulator functions are also turned on. Options are 0 or 1" visible = @thistory && @showhistory && (@thismode == "original" || @thismode == "both") endparam param thist1blend caption = "Blend TrapOriginal?" default = FALSE hint = "If 'Trap Hist Mode' is set to 'original' or 'both', then enabling this option \ mixes in a portion of the unmodified trap point with the history-modified trap. The fraction \ of modified trap blended in is set by parameter 'Trap Hist Fraction'" visible = @thistory && @showhistory && (@thismode == "original" || @thismode == "both") endparam param thist1fraction caption = "Trap Hist Fraction" default = 0.1 hint = "If 'Trap Hist Mode' is set to 'original' or 'both' and 'Blend TrapOriginal' is enabled, \ then this is the fraction of history-modified trap mixed in with the history-unmodified trap \ point" visible = @thistory && @showhistory && (@thismode == "original" || @thismode == "both") && \ @thist1blend endparam param thistype2 caption = "T Hist Type2" default = 1 min = 0 max = 370 hint = "Determines how previous trap generations are used to determine the new trap point \ for 'Trap Hist Mode' = 'alternative'. Range is an integer from 0 (no previous trap \ point used) to 370. \ Types 1-324 recur in sets of 36 (types 1-36 use previous trap, 37-72 use 2nd \ previous trap, etc). Types 325-370 use three generations of trapped point" visible = @thistory && @showhistory && ((@thismode == "alternative") || (@thismode == "both")) endparam param traphisindex2 caption = "T Hist Index2" default = 0 min = 0 max = 9 hint = "Determines how previous trap generations are used to determine the new trap point \ for 'Trap Hist Mode' = 'alternative'. Range is an integer from 0 to 9" visible = @thistory && @showhistory && ((@thismode == "alternative") || (@thismode == "both")) endparam param trapmixmatch3 caption = "T MixMatch3" default = 0 min = 0 max = 1 hint = "Affects whether unmodified or modified trap point is used in the alternative history procedure. Results \ may not be apparent unless some of the trap modifiers, 'Trap Transmute', or back \ end modulator functions are also turned on. Options are 0 or 1" visible = @thistory && @showhistory && (@thismode == "alternative" || @thismode == "both") endparam param trapmixmatch4 caption = "T MixMatch4" default = 1 min = 0 max = 1 hint = "Affects whether unmodified or modified trap point is used in the alternative history procedure. Results \ may not be apparent unless some of the trap modifiers, 'Trap Transmute', or back \ end modulator functions are also turned on. Options are 0 or 1" visible = @thistory && @showhistory && (@thismode == "alternative" || @thismode == "both") endparam param thist2blend caption = "Blend TrapAlternative?" default = FALSE hint = "If 'Trap Hist Mode' is set to 'alternative' or 'both', then enabling this option \ mixes in a portion of the unmodified trap point with the history-modified trap. The fraction \ of modified trap blended in is set by parameter 'Trap Hist2 Fraction'" visible = @thistory && @showhistory && (@thismode == "alternative" || @thismode == "both") endparam param thist2fraction caption = "Trap Hist2 Fraction" default = 0.1 hint = "If 'Trap Hist Mode' is set to 'alternative' or 'both' and 'Blend TrapAlternative' is enabled, \ then this is the fraction of history-modified trap mixed in with the history-unmodified trap \ point" visible = @thistory && @showhistory && (@thismode == "alternative" || @thismode == "both") && \ @thist2blend endparam param showhistory caption = "Show History Params?" hint = "The history-related parameters control the mixing in of previous generations \ of #z before or during the trapping of the current #z iterate" $ifdef VER40 default = TRUE $else default = FALSE $endif endparam heading caption = "Trap Positional Settings" $ifdef VER40 expanded = FALSE $endif endheading 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.1415926535897932384626433832795 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 param alternatespread caption = "Alternate Spread Style?" default = FALSE hint = "If 'Offset Angle' or 'Spread Angle' are enabled, or if 'Screwiness Type' is \ not set to 'none', then selecting this option changes how the \ trapped point is calculated, thereby changing the shape of the trap curve" visible = @showpositionals && ((@screwmode != 0) || @sprangle || @offsetangle) endparam param recipangle caption = "Prereciprocal Angle?" default = FALSE hint = "If enabled, then the reciprocal of Atan(z) is used to compute the trap \ function point. Operates prior to the 'Screwiness' routines" visible = @showpositionals endparam param postrecipangle caption = "Postreciprocal Angle?" default = FALSE hint = "If enabled, then the reciprocal of Atan(z) is used to compute the trap \ function point. Operates after the 'Screwiness' routines" visible = @showpositionals && (@screwmode != 0) endparam param @showpositionals caption = "Show Positional Params?" $ifdef VER40 default = TRUE $else default = FALSE $endif endparam heading caption = "Modifiers" $ifdef VER40 expanded = FALSE $endif endheading 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 operator caption = "Enable Z 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 'Z Operation Constant' sets the constant \ value that is used in the operation" visible = @showmodifiers endparam param operatee caption = "Z Operation Constant" default = (0.2, 0) hint = "If 'Enable Z Operator' is set, this is the constant used in the \ multiplication/addition/subtraction/division/exponentiation/logarithm" visible = (@operator != "none") && @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 swaporder caption = "Swap Order?" default = FALSE hint = "Swaps order of 'Z Variants' and 'Enable Z Operator'. Normally, \ the z variation is executed AFTER the z arithmetic operation; this \ param toggles the execution order" visible = ( @trapvariant != "normal" ) && ( @operator != "none" ) && @showmodifiers endparam param operator2 caption = "Enable Z Op2?" 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 'Z Op Const2' sets the constant \ value that is used in the operation. This action always occurs AFTER \ the first 'Enable Z Operator' and 'Z Variants' actions" visible = @showmodifiers endparam param operatee2 caption = "Z Op Const2" default = (-0.15, -0.1) hint = "If 'Enable Z Op2' is set, this is the constant used in the \ multiplication/addition/subtraction/division/exponentiation/logarithm" visible = (@operator2 != "none") && @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 toperator caption = "Enable T Operator?" enum = "none" "multiply" "add" "subtract" "divide" "exponentiate" \ "subtraction2" "division2" "exponential2" "logarithm" "logarithm2" default = 0 hint = "If enabled, the trap is multiplied by (added to, etc) this constant \ on each iteration before testing; parameter 'T Operation Constant' sets the \ constant value that is used in the operation" visible = @showmodifiers endparam param toperatee caption = "T Operation Constant" default = (0.15, 0) hint = "If 'Enable T Operator' is set, this is the constant used in the \ multiplication/addition/subtraction/division/exponentiation/logarithm" visible = (@toperator != "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" "both" 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.3 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 = 15.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 twavamp2 caption = "Secondary Amplitude" default = 0.3 hint = "If 'Enable T Waviness' is on and 'T Wave Mode' is set to 'both', \ this param sets the height of the tangential wave component \ superposed on the trap function; inactive otherwise" visible = @twavy && @showmodifiers && (@twavmode == 2) endparam param twavfreq2 caption = "Secondary Frequency" default = 15.0 hint = "If 'Enable T Waviness' is on and 'T Wave Mode' is set to 'both', \ this param sets the frequency of the tangential wave component \ superposed on the trap function; inactive otherwise" visible = @twavy && @showmodifiers && (@twavmode == 2) endparam param screwmode caption = "Screwiness Type" enum = "none" "AR" "AI" "R" "I" "A+R" "A+I" "R-A" "I-A" "ARI" \ "A+R+I" "A+R-I" "A-R+I" "A-R-I" "R+I" "R-I" "RI" "(A+R)*I" "(A+I)*R" \ "(A-R)*I" "(A-I)*R" "A*(R+I)" "A*(R-I)" "M" "M+A" "M-A" "M+R" "M-R" \ "M+I" "M-I" "A/M" "R/M" "I/M" "A*(M+R)" "A*(M+I)" "A*(M-R)" "A*(M-I)" \ "A/R" "A/I" default = 0 hint = "If enabled, parts of Real(z), Imag(z), or the magnitude |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 argument to \ the screwiness function" visible = @showmodifiers && (@screwmode != 0) endparam param negatescrew caption = "Negative Screwiness?" default = FALSE hint = "If enabled, then the final output of the screwiness routine is negated" visible = @showmodifiers && (@screwmode != 0) endparam param blendscrewiness caption = "Blend Screwiness?" default = FALSE hint = "If enabled, than the screwiness perturbation can be only partially mixed into \ the calculation" visible = @showmodifiers && (@screwmode != 0) endparam param screwyfraction caption = "Screwy Fraction" default = 0.1 hint = "If 'Blend Screwiness' is enabled, than this is the fraction of the screwiness \ to mix in with the unperturbed angle" visible = @showmodifiers && (@screwmode != 0) && @blendscrewiness endparam param recipreal caption = "Reciprocal Real?" default = FALSE hint = "If enabled, then the reciprocal of Real(z) is used to compute the screwiness" visible = @showmodifiers && ( (@screwmode == 1) || (@screwmode == 3) || (@screwmode == 5) \ || (@screwmode == 7) || (@screwmode == 9) || (@screwmode == 10) || (@screwmode == 11) \ || (@screwmode == 12) || (@screwmode == 13) || (@screwmode == 14) || (@screwmode == 15) \ || (@screwmode == 16) || (@screwmode == 17) || (@screwmode == 18) || (@screwmode == 19) \ || (@screwmode == 20) || (@screwmode == 21) || (@screwmode == 22) || (@screwmode == 26) \ || (@screwmode == 27) || (@screwmode == 31) || (@screwmode == 33) || (@screwmode == 35) \ || (@screwmode == 37) ) endparam param recipimag caption = "Reciprocal Imaginary?" default = FALSE hint = "If enabled, then the reciprocal of Imag(z) is used to compute the screwiness" visible = @showmodifiers && ( (@screwmode == 2) || (@screwmode == 4) || (@screwmode == 6) \ || (@screwmode == 8) || (@screwmode == 9) || (@screwmode == 10) || (@screwmode == 11) \ || (@screwmode == 12) || (@screwmode == 13) || (@screwmode == 14) || (@screwmode == 15) \ || (@screwmode == 16) || (@screwmode == 17) || (@screwmode == 18) || (@screwmode == 19) \ || (@screwmode == 20) || (@screwmode == 21) || (@screwmode == 22) || (@screwmode == 28) \ || (@screwmode == 29) || (@screwmode == 32) || (@screwmode == 34) || (@screwmode == 36) \ || (@screwmode == 38) ) endparam param recipmagn caption = "Reciprocal Magnitude?" default = FALSE hint = "If enabled, then the reciprocal of |z| is used to compute the screwiness" visible = @showmodifiers && ( (@screwmode > 22) && (@screwmode < 37) ) endparam param weirdness caption = "Weirdness?" default = FALSE hint = "If enabled, original #z is used rather than modified #z to determine \ screwiness" visible = @showmodifiers && (@screwmode != 0) endparam param weirdtype caption = "Weirdness Type" enum = "z only" "z+z'" "z-z'" "z'-z" "z*z'" "z/z'" "z'/z" "z^z'" "z'^z" \ "average" "geometric mean" default = 0 hint = "If enabled, both original #z and modified #z are used to determine \ screwiness" visible = @showmodifiers && (@screwmode != 0) && @weirdness endparam param blendweirdness caption = "Blend Weirdness?" default = FALSE hint = "If enabled, than the weirdiness perturbation can be only partially mixed into \ the calculation" visible = @showmodifiers && (@screwmode != 0) && @weirdness endparam param weirdfraction caption = "Weirdness Fraction" default = 0.1 hint = "If 'Blend Weirdness' is enabled, than this is the fraction of the weirdness \ to mix in with the modified #z" visible = @showmodifiers && (@screwmode != 0) && @weirdness && @blendweirdness 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 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 param showmodifiers caption = "Show Modifiers?" $ifdef VER40 default = TRUE $else default = FALSE $endif endparam heading caption = "Modulator Functions" $ifdef VER40 expanded = FALSE $endif endheading 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))" "log(z) B" "log(log(z)) B" "sin(z^power)" 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' or 'sin(z^power)'" visible = ((@initialization == "z^power") || (@initialization == "sin(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))" "log(t) B" "log(log(t)) B" "sin(t^power)" 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' or 'sin(t^power)'" visible = ((@transmogrify == "t^power") || (@transmogrify == "sin(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))" "log(r) B" "log(log(r)) B" "sin(r^power)" 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") || (@realfront == "sin(r^power)")) && @showmodulators endparam param rfscale caption = "Real(z) PreScale" 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 = @rfperturb && (@realfront != "r") && @showmodulators endparam param rfpostscale caption = "Real(z) PostScale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" visible = @showmodulators && @realfront != 0 endparam param imagfront caption = "FrontEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" \ "e^(i^2)" "e^(1/(i^2))" "abs(i)" "round(i)" "trunc(i)" \ "ceil(i)" "floor(i)" "i/log(i)" "log(i)/i" "(e^i)/i" "(e^(1/i))/i" \ "(e^(i^2))/i" "(e^(1/(i^2))/i" "i*e^(i^2)" "i*e^(1/(i^2))" \ "e^(-i^2)" "e^(-1/(i^2))" "(e^(-i^2))/i" "(e^(-1/(i^2))/i" \ "i*e^(-i^2)" "i*e^(-1/(i^2))" "log(i) B" "log(log(i)) B" "sin(i^power)" default = 0 hint = "This function can warp the initial value of imag(z) before input to \ the 'Z Initialization' function. For 'i^power' set param 'FrontEndImag \ Power'" visible = @showmodulators endparam param ifpower caption = "FrontEndImag Power" default = 4.0 hint = "Imag(z) exponent if param 'FrontEndImag Warp' is set to 'i^power'" visible = ((@imagfront == "i^power") || (@imagfront == "sin(i^power)")) && @showmodulators endparam param ifscale caption = "Imag(z) PreScale" 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 ifperturb caption = "Perturb FrontEndImag?" default = FALSE hint = "If enabled, then 'FrontEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'FrontEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = (@imagfront != "i") && @showmodulators endparam param ifblend caption = "FrontEndImag Blend" default = 0.1 hint = "If 'Perturb FrontEndImag' is enabled, then this sets the fraction \ of 'FrontEndImag Warp' that is mixed in with the original imag(a). \ Inactive if 'Perturb FrontEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ifperturb && (@imagfront != "i") && @showmodulators endparam param ifpostscale caption = "Imag(z) PostScale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ iterate z before warping or initialization" visible = @showmodulators && @imagfront != 0 endparam param realback caption = "BackEndReal 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))" "log(r) B" "log(log(r)) B" "sin(r^power)" default = 0 hint = "This function can warp the final value of real(trap) before testing for \ trapping by the 'Trap What?' function. For 'r^power' set param 'BackEndReal \ Power'. Functions after 'Trap Transmute'" visible = @showmodulators endparam param rbpower caption = "BackEndReal Power" default = 4.0 hint = "Real(trap) exponent if param 'BackEndReal Warp' is set to 'r^power'" visible = ((@realback == "r^power") || (@realback == "sin(r^power)")) && @showmodulators endparam param rbscale caption = "Real(t) PreScale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" visible = @showmodulators endparam param rbperturb caption = "Perturb BackEndReal?" default = FALSE hint = "If enabled, then 'BackEndReal Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndReal Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = (@realback != "r") && @showmodulators endparam param rbblend caption = "BackEndReal Blend" default = 0.1 hint = "If 'Perturb BackEndReal' is enabled, then this sets the fraction \ of 'BackEndReal Warp' that is mixed in with the original real(trap). \ Inactive if 'Perturb BackEndReal' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @rbperturb &&(@realback != "r") && @showmodulators endparam param rbpostscale caption = "Real(t) PostScale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" visible = @showmodulators && @realback != 0 endparam param imagback caption = "BackEndImag Warp" enum = "i" "1/i" "i^2" "1/i^2" "log(i)" "e^i" "i^i" "sin(i)" "cos(i)" \ "tan(i)" "asin(i)" "acos(i)" "atan(i)" "sinh(i)" "cosh(i)" "tanh(i)" \ "asinh(i)" "acosh(i)" "atanh(i)" "log(1/i)" "log(log(i))" "e^-i" \ "e^(1/i)" "i^-i" "sin(i)^2" "cos(i)^2" "tan(i)^2" "cot(i)" "sec(i)" \ "csc(i)" "cot(i)^2" "sec(i)^2" "csc(i)^2" "i^i^i" "1/i^i^i" "log(-i)" \ "1/log(i)" "ilog(i)" "sin(i)/i" "cos(i)/i" "sin(i)*cos(i)" "sin(i^2)" \ "e^(-1/i)" "ie^i" "ie^-i" "ie^(1/i)" "ie^(-1/i)" "i^3" "1/i^3" \ "acot(i)" "asec(i)" "acsc(i)" "tan(i)/i" "cot(i)/i" "sec(i)/i" \ "csc(i)/i" "isin(i)" "icos(i)" "itan(i)" "icot(i)" "isec(i)" "icsc(i)" \ "sin(1/i)" "cos(1/i)" "tan(1/i)" "cot(1/i)" "sec(1/i)" "csc(1/i)" \ "cotanh(i)" "sech(i)" "cosech(i)" "acoth(i)" "asech(i)" "acosech(i)" "i^power" \ "sinh(i)^2" "cosh(i)^2" "tanh(i)^2" "cotanh(i)^2" \ "sech(i)^2" "cosech(i)^2" "sinh(1/i)" "cosh(1/i)" "tanh(1/i)" \ "cotanh(1/i)" "sech(1/i)" "cosech(1/i)" "sin(i)tan(i)" "sinh(i)tanh(i)" \ "sinh(i)cosh(i)" "sinh(i)^2*cosh(i)^2" "sin(i)^2*cos(i)^2" \ "sin(1/i)*cos(1/i)" "sin(1/i)^2" "sin(i)cos(1/i)" "sin(i)sin(1/i)" \ "log(i)^2" "sin(i)sin(2i)" "e^2i" "e^-2i" "sinh(1/i)cosh(1/i)" \ "sinh(1/i)^2" "sinh(i)cosh(1/i)" "sinh(i)sinh(1/i)" "sin(i)sinh(i)" \ "sin(i)cosh(i)" "sin(i)^2*sinh(i)^2" "sin(i)e^i" "cos(i)e^i" \ "sinh(i)e^i" "cosh(i)e^i" "sin(i)log(i)" "cos(i)log(i)" "sinh(i)log(i)" \ "cosh(i)log(i)" \ "e^(i^2)" "e^(1/(i^2))" "abs(i)" "round(i)" "trunc(i)" \ "ceil(i)" "floor(i)" "i/log(i)" "log(i)/i" "(e^i)/i" "(e^(1/i))/i" \ "(e^(i^2))/i" "(e^(1/(i^2))/i" "i*e^(i^2)" "i*e^(1/(i^2))" \ "e^(-i^2)" "e^(-1/(i^2))" "(e^(-i^2))/i" "(e^(-1/(i^2))/i" \ "i*e^(-i^2)" "i*e^(-1/(i^2))" "log(i) B" "log(log(i)) B" "sin(i^power)" default = 0 hint = "This function can warp the final value of imag(trap) before testing for \ trapping by the 'Trap What?' function. For 'i^power' set param 'BackEndImag \ Power'. Functions after 'Trap Transmute'" visible = @showmodulators endparam param ibpower caption = "BackEndImag Power" default = 4.0 hint = "Imag(trap) exponent if param 'BackEndImag Warp' is set to 'i^power'" visible = ((@imagback == "i^power") || (@imagback == "sin(i^power)")) && @showmodulators endparam param ibscale caption = "Imag(t) PreScale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" visible = @showmodulators endparam param ibperturb caption = "Perturb BackEndImag?" default = FALSE hint = "If enabled, then 'BackEndImag Warp' is only partially \ blended into the original value, instead of replacing it (less \ warping); param 'BackEndImag Blend' sets the fraction to be blended \ in (0=no perturbation, 1=full perturbation)" visible = (@imagback != "i") && @showmodulators endparam param ibblend caption = "BackEndImag Blend" default = 0.1 hint = "If 'Perturb BackEndImag' is enabled, then this sets the fraction \ of 'BackEndImag Warp' that is mixed in with the original imag(trap). \ Inactive if 'Perturb BackEndImag' is disabled. 0=no perturbation, \ 1=full perturbation" visible = @ibperturb && (@imagback != "i") && @showmodulators endparam param ibpostscale caption = "Imag(t) PostScale" default = 1.0 hint = "These params can be used to scale the individual parts of the \ trap point t before warping (but after transmutation)" visible = @showmodulators && @imagback != 0 endparam param showmodulators caption = "Show Modulator Funcs?" $ifdef VER40 default = TRUE $else default = FALSE $endif 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 heading caption = "Color Settings" $ifdef VER40 expanded = FALSE $endif endheading 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) \ || (@colorby == 4) ) 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) \ || (@colorby == 4) ) 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) \ || (@colorby == 4) ) 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) \ || (@colorby == 4) ) 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 stretchcolor caption = "Stretch Color Range?" default = 1.0 hint = "The color range can be expanded or contracted by setting this value" visible = @showcolors 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))" "log(c) B" "log(log(c)) B" 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 param coloruntrappedregion caption = "Color Untrapped?" default = FALSE hint = "Normaly, pixels that are never trapped are set to the solid color. \ Enabling this option allows those regions to be set to any gradient color \ by setting parameter 'Untrapped Color'. This effect is usually only visible \ at low magnifications" visible = @showcolors endparam param untrappedcolor caption = "Untrapped Color" default = 0.0 min = 0.0 hint = "If param 'Color Untrapped?' is enabled, then this parameter defines which \ gradient color will be used to color untrapped pixels. The normal linear \ range is 0.0-1.0, but higher values are allowed in case a nonlinear transfer \ function is being used" visible = @coloruntrappedregion && @showcolors endparam param offsetcolor caption = "Offset Color Minimium?" default = FALSE hint = "If enabled, then the minimum color value of the trapped range is offset in \ the gradient by the amount set in parameter 'Offset Amount'" visible = @showcolors endparam param coloroffset caption = "Offset Amount" default = 0.1 min = -1.0 max = 1.0 hint = "If 'Offset Color Minimum' is enabled, then the minimum color value of the \ trapped range is offset by this amount" visible = @showcolors && @offsetcolor endparam param offsetcolor2 caption = "Offset Color Type2?" default = FALSE hint = "If enabled, then the minimum color value of the trapped range is offset in \ the gradient by the amount set in parameter 'Offset Amount2'" visible = @showcolors endparam param coloroffset2 caption = "Offset Amount2" default = 0.1 min = -1.0 max = 1.0 hint = "If 'Offset Color Type2' is enabled, then the minimum color value of the \ trapped range is offset by this amount" visible = @showcolors && @offsetcolor2 endparam param showcolors caption = "Show Color Params?" $ifdef VER40 default = TRUE $else default = FALSE $endif endparam heading caption = "fBm Settings" $ifdef VER40 expanded = FALSE $endif endheading 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 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" visible = @fBm && @showfbm endparam param boctaves caption = "fBm Octaves" default = 7 min = 1 hint = "The number of iterations of the fBm noise function" visible = @fBm && @showfbm endparam param bpower caption = "fBm Exponent" default = 2.0 hint = "The exponent used for randomization if fBm is enabled \ for fBm randomiaation" visible = @fBm && @showfbm endparam param fbminit caption = "fBm Initialization" enum = "z" "mod z" "trap" "blend 1" "blend 2" "blend 3" default = 0 hint = "This setting defines the input to the fBm algorithm" visible = @fBm && @showfbm endparam param fbmzweight caption = "fBm Z Weight" default = 0.25 hint = "If 'fBm Initialization' is set to one of the 'blend' options, then this parameter \ sets the fraction of #z that is used to initialize the fBm algorithm" visible = @fBm && @showfbm && ((@fbminit == "blend 1") || (@fbminit == "blend 2") \ || (@fbminit == "blend 3")) endparam param fbmtrapweight caption = "fBm Trap Weight" default = 0.75 hint = "If 'fBm Initialization' is set to one of 'blend 1' or 'blend 2', then this parameter \ sets the fraction of the trap point that is used to initialize the fBm algorithm. For \ 'blend 3', this param sets the fraction of 'mod z' that is mixed with #z" visible = @fBm && @showfbm && ((@fbminit == "blend 1") || (@fbminit == "blend 2") \ || (@fbminit == "blend 3")) endparam param @fbmcplxoffset caption = "fBm Offset" default = (0,0) hint = "This complex constant is added to the fBm initialization value" 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 'fBm Feedback' 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 param showfbm caption = "Show fBm Params?" $ifdef VER40 default = TRUE $else default = FALSE $endif endparam heading caption = "Texture Settings" $ifdef VER40 expanded = FALSE $endif endheading param texture caption = "Enable Texture?" default = FALSE hint = "If enabled, up to four texture function scan be specified" visible = @showtex endparam param texamount caption = "Texture Amount" default = 0.1 hint = "This param sets the overall amount of texture, if enabled" visible = @showtex && @texture 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 = 2 hint = "This is the first of up to four texture functions. Texture functions may be turned \ off by setting them to 'x'" visible = @showtex && @texture endparam param tex2power caption = "Tex Fn1 Power" default = 4.0 hint = "This is the exponent if 'Texture Func 1' is \ set to 'x^power'" visible = @showtex && @texfunc1 == "x^power" && @texture endparam param texf1offset caption = "Tex Fn1 Offset" default = (0, 0) hint = "This constant is added to the result of 'Texture Func 1'" visible = @showtex && @texture endparam param texf1multiplier caption = "Tex Fn1 Multiplier" default = (1, 0) hint = "This constant is multiplied by the result of 'Texture Func 1'" 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 = 0 hint = "This is the second of up to four texture functions. Texture functions may be turned \ off by setting them to 'x'" visible = @showtex && @texture endparam param tex2power2 caption = "Tex Fn2 Power" default = 4.0 hint = "This is the exponent if 'Texture Func 2' is \ set to 'x^power'" visible = @showtex && @texfunc2 == "x^power" && @texture endparam param texf2offset caption = "Tex Fn2 Offset" default = (0, 0) hint = "This constant is added to the result of 'Texture Func 2'" 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 = 0 hint = "This is the third of up to four texture functions. Texture functions may be turned \ off by setting them to 'x'" visible = @showtex && @texture endparam param tex2power3 caption = "Tex Fn3 Power" default = 4.0 hint = "This is the exponent if 'Texture Func 3' is \ set to 'x^power'" visible = @showtex && @texfunc3 == "x^power" && @texture endparam param texf3offset caption = "Tex Fn3 Offset" default = (0, 0) hint = "This constant is added to the result of 'Texture Func 3'" visible = @showtex && @texture endparam param texf3multiplier caption = "Tex Fn3 Multiplier" default = (1, 0) hint = "This constant is multiplied by the result of 'Texture Func 3'" 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 = 0 hint = "This is the fourth of up to four texture functions. Texture functions may be turned \ off by setting them to 'x'" visible = @showtex && @texture endparam param tex2power4 caption = "Tex Fn4 Power" default = 4.0 hint = "This is the exponent if 'Texture Func 4' is \ set to 'x^power'" visible = @showtex && @texfunc4 == "x^power" && @texture endparam param texf4offset caption = "Tex Fn4 Offset" default = (1, 0) hint = "This constant is multiplied by the result of 'Texture Func 1'" visible = @showtex && @texture endparam param texpower caption = "Texture Power" default = 0.25 hint = "Params 'Tex Power' & 'Tex Scale' set the initial overall levels in the \ texture algorithm" visible = @showtex && @texture endparam param texscale caption = "Texture Scale1" default = 10.0 hint = "Params 'Texture Power' & 'Texture Scale1' set the initial overall levels in the \ texture algorithm; 'Texture 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 param showtex caption = "Show Texture Settings?" $ifdef VER40 default = TRUE $else default = FALSE $endif endparam heading caption = "Absolute Value Options" $ifdef VER40 expanded = FALSE $endif endheading param absolutez caption = "Absolute A?" default = FALSE hint = "Affects z at the top of the iteration loop" visible = @showabsolutes endparam param absoluter caption = "Absolute B?" default = FALSE hint = "Affects real(z) at the top of the iteration loop" visible = @showabsolutes && !@absolutez endparam param absolutei caption = "Absolute C?" default = FALSE hint = "Affects imag(z) at the top of the iteration loop" visible = @showabsolutes && !@absolutez endparam param absoluter2 caption = "Absolute D?" default = FALSE hint = "Affects input to front end real modulator function" visible = @showabsolutes && (@rfscale != 1.0 || @realfront != 0) endparam param absoluter3 caption = "Absolute E?" default = FALSE hint = "Affects front end real modulator function output (result)" visible = @showabsolutes && (@rfscale != 1.0 || @realfront != 0) endparam param absolutei2 caption = "Absolute F?" default = FALSE hint = "Affects input to front end imaginary modulator function" visible = @showabsolutes && (@ifscale != 1.0 || @imagfront != 0) endparam param absolutei3 caption = "Absolute G?" default = FALSE hint = "Affects front end imag modulator function output (result)" visible = @showabsolutes && (@ifscale != 1.0 || @imagfront != 0) endparam param absolutez2 caption = "Absolute H?" default = FALSE hint = "Affects z initialization modulator function result" visible = @showabsolutes && (@ziscale != 1.0 || @initialization != 0) endparam param absoluter4 caption = "Absolute I?" default = FALSE hint = "Affects real part of z initialization modulator function output" visible = @showabsolutes && (@ziscale != 1.0 || @initialization != 0) && !@absolutez2 endparam param absolutei4 caption = "Absolute J?" default = FALSE hint = "Affects imaginary part of z initialization modulator function output" visible = @showabsolutes && (@ziscale != 1.0 || @initialization != 0) && !@absolutez2 endparam param absolutez3 caption = "Absolute K?" default = FALSE hint = "Affects z just before trap testing, after modifiers such as 'Z Variant', \ 'Enable Operator', etc." visible = @showabsolutes endparam param absoluter5 caption = "Absolute L?" default = FALSE hint = "Affects real z just before trap testing, after modifiers such as 'Z Variant', \ 'Enable Operator', etc." visible = @showabsolutes && !@absolutez3 endparam param absolutei5 caption = "Absolute M?" default = FALSE hint = "Affects imag z just before trap testing, after modifiers such as 'Z Variant', \ 'Enable Operator', etc." visible = @showabsolutes && !@absolutez3 endparam param absolutet caption = "Absolute N?" default = FALSE hint = "Affects trap point coordinates before transmute" visible = @showabsolutes endparam param absoluter6 caption = "Absolute O?" default = FALSE hint = "Affects trap point real coordinate before transmute" visible = @showabsolutes && !@absolutet endparam param absolutei6 caption = "Absolute P?" default = FALSE hint = "Affects trap point imag coordinate before transmute" visible = @showabsolutes && !@absolutet endparam param absolutet2 caption = "Absolute Q?" default = FALSE hint = "Affects trap point after all back end modulation functions" visible = @showabsolutes && (@rbscale != 1.0 || @realback != 0 \ || @ibscale != 1.0 || @imagback != 0 || @transmogrify != 0 \ || @tiscale != 1.0) endparam param absoluter7 caption = "Absolute R?" default = FALSE hint = "Affects real coordinate of trap point after all back end modulation functions" visible = @showabsolutes && (@rbscale != 1.0 || @realback != 0 \ || @ibscale != 1.0 || @imagback != 0 || @transmogrify != 0 \ || @tiscale != 1.0) && !@absolutet2 endparam param absolutei7 caption = "Absolute S?" default = FALSE hint = "Affects imaginary coordinate of trap point after all back end modulation functions" visible = @showabsolutes && (@rbscale != 1.0 || @realback != 0 \ || @ibscale != 1.0 || @imagback != 0 || @transmogrify != 0 \ || @tiscale != 1.0) && !@absolutet2 endparam param showabsolutes caption = "Show Absolute Options?" $ifdef VER40 default = TRUE $else default = FALSE $endif hint = "Options based on use of absolute values. Not all absolute options \ are always available, depending upon other settings" endparam heading caption = "Bias Settings" $ifdef VER40 expanded = FALSE $endif endheading param initialbias caption = "Initial Bias?" default = FALSE hint = "If enabled, then #z is modified by parameters 'InitialAdd', 'InitialProd', and 'InitialExp' \ at the beginning of the iteration loop and just before the 'Original History' \ modifications. Try using the Explorer tool" visible = @showbias endparam param ibaddend caption = "InitialAdd" default = (0,0) hint = "If 'Initial Bias' is turned on, then this value is added to #z \ at the beginning of the iteration loop and just before the 'Original History' \ modifications" visible = @showbias && @initialbias endparam param ibprod caption = "InitialProd" default = (1,0) hint = "If 'Initial Bias' is turned on, then this value is multiplied by #z \ at the beginning of the iteration loop and just before the 'Original History' \ modifications" visible = @showbias && @initialbias endparam param ibexponent caption = "InitialExp" default = (1,0) hint = "If 'Initial Bias' is turned on, then #z is raised to this power \ at the beginning of the iteration loop and just before the 'Original History' \ modifications" visible = @showbias && @initialbias endparam param frontendbias caption = "Front End Bias?" default = FALSE hint = "If enabled, then #z is modified by parameters 'FrontEndAdd', 'FrontEndProd', and 'FrontEndExp' \ after the 'Original History' modifications and just prior to entering the \ front end modulator functions" visible = @showbias endparam param febaddend caption = "FrontEndAdd" default = (0,0) hint = "If 'Front End Bias' is turned on, then this value is added to #z before starting the \ front end modulator functions; operates before 'FrontEndProd'" visible = @showbias && @frontendbias endparam param febprod caption = "FrontEndProd" default = (1,0) hint = "If 'Front End Bias' is turned on, then this value is multiplied by #z before starting the \ front end modulator functions; operates before 'FrontEndExp'" visible = @showbias && @frontendbias endparam param febexponent caption = "FrontEndExp" default = (1,0) hint = "If 'Front End Bias' is turned on, then #z is raised to this power before starting the \ front end modulator functions; operates after 'FrontEndAdd'" visible = @showbias && @frontendbias endparam param zinitbias caption = "Z Init Bias?" default = FALSE hint = "If enabled, then #z is modified by parameters 'ZInitAdd', 'ZInitProd', and 'ZInitExp' \ after the front end real & imag modulator functions and just prior to entering the \ #z initialization modulator function" visible = @showbias endparam param zibaddend caption = "ZInitAdd" default = (0,0) hint = "If 'Z Init Bias' is turned on, then this value is added to #z before starting the \ #z initialization modulator function; operates before 'ZInitProd'" visible = @showbias && @zinitbias endparam param zibprod caption = "ZInitProd" default = (1,0) hint = "If 'Z Init Bias' is turned on, then this value is multiplied by #z before starting the \ #z initialization modulator function; operates before 'ZInitExp'" visible = @showbias && @zinitbias endparam param zibexponent caption = "ZInitExp" default = (1,0) hint = "If 'Z Init Bias' is turned on, then #z is raised to this power before starting the \ #z initialization modulator function; operates after 'ZInitAdd'" visible = @showbias && @zinitbias endparam param zalthisbias caption = "Z AltHistory Bias?" default = FALSE hint = "If enabled, then #z is modified by parameters 'ZAltHAdd', 'ZAltHProd', and 'ZAltHExp' \ after the alternative history modifier routine and just prior to entering the \ trapping functions" visible = @showbias endparam param zahbaddend caption = "ZAltHAdd" default = (0,0) hint = "If 'Z AltHistory Bias' is turned on, then this value is added to #z before entering the \ trapping functions; operates before 'ZAltHExp'" visible = @showbias && @zalthisbias endparam param zahbprod caption = "ZAltHProd" default = (1,0) hint = "If 'Z AltHistory Bias' is turned on, then this value is multiplied by #z before entering the \ trapping functions; operates before 'ZAltHExp'" visible = @showbias && @zalthisbias endparam param zahbexponent caption = "ZAltHExp" default = (1,0) hint = "If 'Z AltHistory Bias' is turned on, then #z is raised to this power before entering the \ trapping functions; operates after 'ZAltHAdd'" visible = @showbias && @zalthisbias endparam param anglebias caption = "Angle Bias?" default = FALSE hint = "If enabled, then the angle input to the trapping function is modified by \ parameters 'AngleAdd', 'AngleProd', and 'AngleExp'" visible = @showbias endparam param abaddend caption = "AngleAdd" default = (0,0) hint = "If 'Angle Bias' is turned on, then this value is added to the angle of #z before \ entering the trapping functions; operates before 'AngleProd'" visible = @showbias && @anglebias endparam param abprod caption = "AngleProd" default = (1,0) hint = "If 'Angle Bias' is turned on, then this value is multiplied by #z before entering the \ trapping functions; operates before 'AngleExp'" visible = @showbias && @anglebias endparam param abexponent caption = "AngleExp" default = (1,0) hint = "If 'Angle Bias' is turned on, then the angle of #z is raised to this power \ before entering the trapping functions; operates after 'AngleAdd'" visible = @showbias && @anglebias endparam param trapbias caption = "Trap Bias?" default = FALSE hint = "If enabled, then the trap point is modified by parameters 'TrapAdd', 'TrapProd', and 'TrapExp' \ just before the alternative trap history routine" visible = @showbias endparam param tbaddend caption = "TrapAdd" default = (0,0) hint = "If 'Trap Bias' is turned on, then this value is added to the trap point before \ entering the alternative trap history routine; operates before 'TrapProd'" visible = @showbias && @trapbias endparam param tbprod caption = "TrapProd" default = (1,0) hint = "If 'Trap Bias' is turned on, then this value is multiplied by the trap point before \ entering the alternative trap history routine; operates before 'TrapExp'" visible = @showbias && @trapbias endparam param tbexponent caption = "TrapExp" default = (1,0) hint = "If 'Trap Bias' is turned on, then the trap point is raised to this power \ before entering the alternative trap history routine; operates after 'TrapAdd'" visible = @showbias && @trapbias endparam param transmutebias caption = "Transmute Bias?" default = FALSE hint = "If enabled, then the trap point is modified by parameters 'TransmuteAdd', 'TransmuteProd', and \ 'TransmuteExp' after the 'Alternative Trap History' routine and just before \ the 'Trap Transmute' modulator function" visible = @showbias endparam param tmbaddend caption = "TransmuteAdd" default = (0,0) hint = "If 'Transmute Bias' is turned on, then this value is added to the trap point \ after the 'Alternative Trap History' routine and just before \ the 'Trap Transmute' modulator function" visible = @showbias && @transmutebias endparam param tmbprod caption = "TransmuteProd" default = (1,0) hint = "If 'Transmute Bias' is turned on, then this value is multiplied by the trap point \ after the 'Alternative Trap History' routine and just before \ the 'Trap Transmute' modulator function" visible = @showbias && @transmutebias endparam param tmbexponent caption = "TransmuteExp" default = (1,0) hint = "If 'Transmute Bias' is turned on, then the trap point is raised to this power \ after the 'Alternative Trap History' routine and just before \ the 'Trap Transmute' modulator function" visible = @showbias && @transmutebias endparam param backendbias caption = "Back End Bias?" default = FALSE hint = "If enabled, then the trap point is modified by parameters 'BackEndAdd', 'BackEndProd', and \ 'BackEndExp' after the 'Trap Transmute' modulator function and just before \ the real and imaginary back end modulator functions" visible = @showbias endparam param bebaddend caption = "BackEndAdd" default = (0,0) hint = "If 'Back End Bias' is turned on, then this value is added to the trap point \ after the 'Trap Transmute' modulator function and just before \ the real and imaginary back end modulator functions" visible = @showbias && @backendbias endparam param bebprod caption = "BackEndProd" default = (1,0) hint = "If 'Back End Bias' is turned on, then this value is multiplied by the trap point \ after the 'Trap Transmute' modulator function and just before \ the real and imaginary back end modulator functions" visible = @showbias && @backendbias endparam param bebexponent caption = "BackEndExp" default = (1,0) hint = "If 'Back End Bias' is turned on, then the trap point is raised to this power \ after the 'Trap Transmute' modulator function and just before \ the real and imaginary back end modulator functions" visible = @showbias && @backendbias endparam param tvariantbias caption = "TrapVariant Bias?" default = FALSE hint = "If enabled, then the trap point is modified by parameters 'TVariantAdd', 'TVariantProd', and \ 'TVariantExp' after the real and imaginary back end modulator functions and \ just before the 'Trap Variants' modifier routine" visible = @showbias endparam param tvbaddend caption = "TVariantAdd" default = (0,0) hint = "If 'TVariant Bias' is turned on, then this value is added to the trap point \ after the real and imaginary back end modulator functions and \ just before the 'Trap Variants' modifier routine" visible = @showbias && @tvariantbias endparam param tvbprod caption = "TVariantProd" default = (1,0) hint = "If 'TVariant Bias' is turned on, then this value is multiplied by the trap point \ after the real and imaginary back end modulator functions and \ just before the 'Trap Variants' modifier routine" visible = @showbias && @tvariantbias endparam param tvbexponent caption = "TVariantExp" default = (1,0) hint = "If 'TVariant Bias' is turned on, then the trap point is raised to this power \ after the real and imaginary back end modulator functions and \ just before the 'Trap Variants' modifier routine" visible = @showbias && @tvariantbias endparam param thisbias caption = "TrapHist Bias?" default = FALSE hint = "If enabled, then the trap point is modified by parameters 'THistAdd', 'THistProd', and 'THistExp' \ just after the 'Trap Variants' routine, and just before the original trap history routine" visible = @showbias endparam param thbaddend caption = "THistAdd" default = (0,0) hint = "If 'TrapHist Bias' is turned on, then this value is added to the trap point \ just after the 'Trap Variants' routine, and just before the original trap history routine" visible = @showbias && @thisbias endparam param thbprod caption = "THistProd" default = (1,0) hint = "If 'TrapHist Bias' is turned on, then this value is multiplied by the trap point \ just after the 'Trap Variants' routine, and just before the original trap history routine" visible = @showbias && @thisbias endparam param thbexponent caption = "THistExp" default = (1,0) hint = "If 'THist Bias' is turned on, then the trap point is raised to this power \ just after the 'Trap Variants' routine, and just before the original trap history routine" visible = @showbias && @thisbias endparam param finalbias caption = "Final Bias?" default = FALSE hint = "If enabled, then the trap point is modified by parameters 'FinalAdd', 'FinalProd', and 'FinalExp' \ just after the original trap history routine, and just before the 'Trap Flavor' routine" visible = @showbias endparam param fbaddend caption = "FinalAdd" default = (0,0) hint = "If 'Final Bias' is turned on, then this value is added to the trap point \ just after the original trap history routine, and just before the 'Trap Flavor' routine" visible = @showbias && @finalbias endparam param fbprod caption = "FinalProd" default = (1,0) hint = "If 'Final Bias' is turned on, then this value is multiplied by the trap point \ just after the original trap history routine, and just before the 'Trap Flavor' routine" visible = @showbias && @finalbias endparam param fbexponent caption = "FinalExp" default = (1,0) hint = "If 'Final Bias' is turned on, then the trap point is raised to this power \ just after the original trap history routine, and just before the 'Trap Flavor' routine" visible = @showbias && @finalbias endparam param showbias caption = "Show Bias Params?" $ifdef VER40 default = TRUE $else default = FALSE $endif endparam heading caption = "Mask Settings" $ifdef VER40 expanded = FALSE $endif endheading 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" "mod iter" "modulus angle" default = 4 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 itermaskmod caption = "MaskA Iter Modulus" default = 2 min = 1 hint = "If 'Mask What (A)' is set to 'mod iter', then this parameter sets \ the modulus" visible = @showmasks && @maskwhatA == "mod iter" endparam param anglemaskmod caption = "MaskA Angle Modulus" default = 1.5707963267948966192313216916398 ; pi/2 min = 1.0e-9 hint = "If 'Mask What (A)' is set to 'mod iter', then this parameter sets \ the modulus" visible = @showmasks && @maskwhatA == "modulus angle" 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" "mod iter" "modulus angle" default = 1 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 param itermaskmodB caption = "MaskB Iter Modulus" default = 2 min = 1 hint = "If 'Mask What (B)' is set to 'mod iter', then this parameter sets \ the modulus" visible = @showmasks && @maskwhatB == "mod iter" endparam param anglemaskmodB caption = "MaskB Angle Modulus" default = 1.5707963267948966192313216916398 ; pi/2 min = 1.0e-9 hint = "If 'Mask What (B)' is set to 'mod iter', then this parameter sets \ the modulus" visible = @showmasks && @maskwhatB == "modulus angle" endparam param showmasks caption = "Show Mask Params?" $ifdef VER40 default = TRUE $else default = FALSE $endif endparam } jam-symmicons3x { ; Joseph A. Maddry 040214 ; The underlying code is ; based on the Kerry Mitchell 08Sep2002 formula, ; symmetric-icons, in folder lkm3.ucl. ; Thank you, Kerry, for letting me play with and share this modification! ; Incorporates additional scaling and coloring options, ; and allows non-integer exponents for asymmetric effects. ; ; This is not a drop-in replacement for Symmetric Icons, since the ; log and tanh colorings are defined somewhat differently, and ; the original rotation mode has been dropped. ; ; Kerry's original comments to his formula follow: ; ; Creates "icon" fractals like those in "Symmetry in Chaos" ; by Field and Golubitsky ; ; Works like a "flame" fractal: the image is represented by ; an array that is computed globally. The image may take ; several seconds to several minutes to come up, depending on ; the parameters. ; ; This version takes the center, magnification and angle ; coordinates from the Location layer, but does not support ; stretch or skew values. Use it as an inside coloring with ; the "pixel" formula in the "mt" folder. ; $define debug global: ; jam additional variables float twopi = 2 * #pi int pixwidth = #width - 1 ; maximum x index for pixel array int pixheight = #height - 1 ; maximum y index for pixel array ; int hitssum = int pixelcount = 0 ; int hitsmax = 0 ; float avg1 = float avg2 = 0.0 int gi=0 int xpix=0 int ypix=0 int gn=round(#width*#height*@samplefac) int hits[#width,#height] float np=@n*@p float p=0.0 float xold=0.0 float yold=0.0 float xnew=0.0 float ynew=0.0 float realznm1=0.0 float imagznm1=0.0 float realzn=0.0 float zzbar=0.0 float pnp=0.0 float fac=4/#magn float xmin=real(#center)-0.5*fac float xmax=xmin+fac*(pixwidth)/#width float rdx=(pixwidth)/(xmax-xmin) fac=fac*#height/#width float ymax=imag(#center)+0.5*fac float ymin=ymax-fac*(pixwidth)/#width float rdy=(pixheight)/(ymax-ymin) zorbit=@zinitial worbit=(0,0) rot=cos(#angle)-flip(sin(#angle)) ; ; clear out array ; ypix=-1 while(ypix<(pixheight)) ypix=ypix+1 xpix=-1 while(xpix<(pixwidth)) xpix=xpix+1 hits[xpix,ypix]=0 endwhile endwhile ; ; let transients settle out ; gi=0 while(gi<@ntrans) gi=gi+1 xold=real(zorbit) yold=imag(zorbit) zzbar=|zorbit| realznm1=real(zorbit^(@n-1)) imagznm1=imag(zorbit^(@n-1)) realzn=real(zorbit^@n) p=@lambda+@alpha*zzbar+@beta*realzn pnp=cos(atan2(zorbit)*np) pnp=@delta*pnp*cabs(zorbit) xnew=p*xold+@gamma*realznm1+pnp*xold-@omega*yold ynew=p*yold-@gamma*imagznm1+pnp*yold+@omega*xold zorbit=xnew+flip(ynew) endwhile ; ; compute orbit ; gi=0 while(gixmin)&&(xnewymin)&&(ynew= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 1 ; check other pixels in this column if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 ; restore state of y pointer endif ; xpix xpix = xpix + 1 ; original column --- x is OK, test rows ypix = ypix - 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ; end elseif nails elseif @hittype == "beebees" xpix = xpix - 2 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; xpix xpix = xpix + 1 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 1 ; restore y pointer endif ; xpix xpix = xpix + 1 ; original column --- x is OK ypix = ypix - 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 1 ; original row --- y is OK xpix = xpix + 1 if xpix <= pixwidth hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; xpix ; end elseif beebees elseif @hittype == "bullets" xpix = xpix - 2 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 ; restore y endif ; xpix xpix = xpix + 1 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 2 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 1 ; restore y endif ; xpix xpix = xpix + 1 ; original pixel --- x is OK ypix = ypix - 2 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 1 ; restore y --- original pixel xpix = xpix + 1 if xpix <= pixwidth hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix endif ; xpix ; end elseif bullets elseif @hittype == "bombs" xpix = xpix - 2 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 1 ; restore y endif ; xpix xpix = xpix + 1 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 2 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 2 ; restore y endif ; xpix xpix = xpix + 1 ; original pixel --- x OK ypix = ypix - 2 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 2 ; restore y --- original pixel xpix = xpix + 1 if xpix <= pixwidth hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 2 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 2 ; restore y endif ; xpix xpix = xpix + 1 if xpix <= pixwidth hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix endif ; xpix ; end elseif bombs else ; @hittype == "nukes" xpix = xpix - 3 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 2 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 1 ; restore y endif ; xpix xpix = xpix + 1 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 3 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 2 ; restore y endif ; xpix xpix = xpix + 1 if xpix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 3 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 2 ; restore y endif ; xpix xpix = xpix + 1 ; original pixel --- x OK ypix = ypix - 3 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 2 ; restore y --- original pixel xpix = xpix + 1 if xpix <= pixwidth hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 3 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix - 2 ; restore y endif ; xpix xpix = xpix + 1 if xpix <= pixwidth hits[xpix,ypix]=hits[xpix,ypix]+1 ypix = ypix - 2 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 1 if ypix >= 0 hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix ypix = ypix + 2 if ypix <= pixheight hits[xpix,ypix]=hits[xpix,ypix]+1 endif ; ypix endif ; xpix endif ; end else nukes endif ; @hittype == pins ; for the old style color ranges code ; if @ranges != 1 ; keep trap of max hit number ; if hits[xpix,ypix] > hitsmax ; hitsmax = hitsmax + 1 ; can't increase by more than 1 unit at a time ; endif ; hits ; endif ; @ranges endif ; xnew endwhile ; gi ; for the "avg" coloring methods ; avg1 = hitssum/(#width*#height*@scalefactor) ; avg2 = hitssum/pixelcount ; rdx = rdx*2, rdy = rdy*2 float aspect = #width/#height float xincrement = float yincrement = 0.0 float xmin2 = float xmax2 = float ymin2 = float ymax2 = 0.0 float jtemp = 0.0 xincrement = 4/(#magn*#width) yincrement = 4/(#magn*#height*aspect) jtemp = xincrement*#width/2 xmin2 = real(#center) - jtemp xmax2 = real(#center) + jtemp jtemp = yincrement*#height/2 ymin2 = imag(#center) - jtemp ymax2 = imag(#center) + jtemp init: int nin = 0 ; jam additional variables ; for color and color range calculations int count = 0, int countlimit = @ranges - 1 bool done = FALSE float tempcolor = 0.0 float ftemp = float ftemp2 = 0.0 int rangelimits[7] ; other useful variables complex ztemp = (0,0) float xtemp = float ytemp = 0.0 int xindex = int yindex = 0 ; float binsize = 0.0 ; float binscalefactor = @binscale ; initialize color ranges array if @ranges != 1 rangelimits[0] = @range1 rangelimits[1] = @range2 rangelimits[2] = @range3 rangelimits[3] = @range4 rangelimits[4] = @range5 rangelimits[5] = @range6 rangelimits[6] = @range7 endif ; @ranges loop: final: ztemp=(#pixel-#center)*rot+#center xtemp=real(ztemp) ytemp=imag(ztemp) if((xtemp>xmin2)&&(xtempymin2)&&(ytemp @maskAmin #solid = TRUE endif ; nin elseif @maskifA == "falls below" if nin < @maskAmin #solid = TRUE endif ; nin elseif @maskifA == "falls between" if (nin > @maskAmin) && (nin < @maskAmax) #solid = TRUE endif ; nin elseif @maskifA == "falls outside" if (nin < @maskAmin) || (nin > @maskAmax) #solid = TRUE endif ; nin elseif @maskifA == "equals" if nin == @maskAmin #solid = TRUE endif ; nin elseif @maskifA == "not equal" if nin != @maskAmin #solid = TRUE endif ; nin endif ; @maskifA endif ; maskA if nin == 0 ftemp = @BGindex endif ; nin #index = abs(ftemp) endif default: title="Asymmetric Icons" render=false heading caption = "Equation Settings" endheading param showcoeffs caption = "Show Equation Params?" default = TRUE endparam param n caption = "Symmetry, N" default = 5.0 hint = "Degree of symmetry" visible = @showcoeffs endparam param lambda caption = "Lambda" default = -2.34 visible = @showcoeffs endparam param alpha caption = "Alpha" default = 2.0 visible = @showcoeffs endparam param beta caption = "Beta" default = 0.2 visible = @showcoeffs endparam param gamma caption = "Gamma" default = 0.1 visible = @showcoeffs endparam param omega caption = "Omega" default = 0.0 visible = @showcoeffs endparam param delta caption = "Delta" default = 0.0 visible = @showcoeffs endparam param p caption = "p" default = 0.0 enabled = @delta != 0.0 visible = (@showcoeffs && (@delta != 0.0)) endparam heading caption = "Plot Settings" endheading param showplot caption = "Show Plot Params?" default = FALSE endparam param hittype caption = "Hit Type" enum = "pins" "nails" "beebees" "bullets" "bombs" "nukes" default = 0 hint = "Affects size of hit; consequently, also increases the \ density/transparency of, and the time for, the plot. \ 'pins' corresponds to the original hit size of 1 pixel" visible = @showplot endparam param samplefac caption = "Sampling Factor" default = 1.0 hint = "Increase to draw more points (takes longer, but increases plot \ density/transparency)" visible = @showplot endparam complex param zinitial caption = "Initial Z" default = (0.001,0.002) visible = @showplot endparam param ntrans caption = "Transients" default = 50 min = 0 hint = "How many times to iterate before drawing the points." visible = @showplot endparam heading caption = "Color Settings" endheading param showcolor caption = "Show Color Params?" default = TRUE endparam param @scalefactor caption = "Color Scale Factor" default = 0.01 hint = "This is the factor with which to multiply the hit count; \ it acts like a color density" visible = @showcolor 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). A transfer function" visible = @showcolor endparam param cpower caption = "Color Power" default = 0.25 hint = "Color index exponent if param 'Color Warp Factor' is set to 'c^power'" visible = (@showcolor && (@colorwarp == "c^power")) endparam param colorby caption = "Color By?" enum = "hits" "angle" "origin distance" "left distance" "top distance" ;\ ; "avg hits 1" "avg hits 2" default = 0 hint = "Color by the number of times the pixel was hit, or by the pixel's \ position relative to various screen positions. 'Avg hits 1' uses all \ pixels to figure the average; 'avg hits 2' only uses pixels that were \ hit at least once" visible = @showcolor endparam param ranges caption = "Color Ranges" default = 1 min = 1 max = 8 hint = "Different ranges of the color palette can be used, based on the \ pixel hit count. Designed to be used with the 'Color By' param \ set to 'hits', but can produce interesting effects otherwise too. \ Enter 1-8" visible = @showcolor endparam ; param rangestyle ; caption = "Range Style" ; enum = "remainders" "bins" ; default = 0 ; hint = "Pick an algorithm for 'Color Ranges'" ; visible = @ranges != 1 ; endparam ; param binscale ; caption = "Bin Scale" ; default = 0.2 ; hint = "This param scales the number of hits that fall into the various bins" ; visible = (@ranges != 1) && (@rangestyle == "bins") ; endparam ; param binaccel ; caption = "BinScale Acceleration" ; default = 1.25 ; hint = "This param is used to modulate the growth of the 'Bin Scale' parameter. \ ; Values > 1, 'Bin Scale' grows with increasing hits; values < 1, 'Bin Scale' \ ; shrinks; value = 1, 'Bin Scale' is constant" ; visible = (@ranges != 1) && (@rangestyle == "bins") ; endparam param range1 caption = "Range 1 Limit" default = 4 hint = "If 'Color Ranges' is greater than 1, then this parameter sets the \ pixel hit limit for the 1st range; pixels that are hit less than this \ number of times will be assigned a color in the 1st palette range" visible = (@showcolor && (@ranges > 1)) endparam param range2 caption = "Range 2 Limit" default = 8 hint = "If 'Color Ranges' is greater than 2, then this parameter sets the \ pixel hit limit for the 2nd range; pixels that are hit less than this \ number of times will be assigned a color in the 2nd palette range" visible = (@showcolor && (@ranges > 2)) endparam param range3 caption = "Range 3 Limit" default = 11 hint = "If 'Color Ranges' is greater than 3, then this parameter sets the \ pixel hit limit for the 3rd range; pixels that are hit less than this \ number of times will be assigned a color in the 3rd palette range" visible = (@showcolor && (@ranges > 3)) endparam param range4 caption = "Range 4 Limit" default = 14 hint = "If 'Color Ranges' is greater than 4, then this parameter sets the \ pixel hit limit for the 4th range; pixels that are hit less than this \ number of times will be assigned a color in the 4th palette range" visible = (@showcolor && (@ranges > 4)) endparam param range5 caption = "Range 5 Limit" default = 16 hint = "If 'Color Ranges' is greater than 5, then this parameter sets the \ pixel hit limit for the 5th range; pixels that are hit less than this \ number of times will be assigned a color in the 5th palette range" visible = (@showcolor && (@ranges > 5)) endparam param range6 caption = "Range 6 Limit" default = 18 hint = "If 'Color Ranges' is greater than 6, then this parameter sets the \ pixel hit limit for the 6th range; pixels that are hit less than this \ number of times will be assigned a color in the 6th palette range" visible = (@showcolor && (@ranges > 6)) endparam param range7 caption = "Range 7 Limit" default = 20 hint = "If 'Color Ranges' is greater than 7, then this parameter sets the \ pixel hit limit for the 7th range; pixels that are hit less than this \ number of times will be assigned a color in the 7th palette range" visible = (@showcolor && (@ranges > 7)) endparam param solidbg caption = "Solid Background?" default = TRUE visible = @showcolor endparam param BGindex caption = "Background Color" default = 0.0 min = 0.0 max = 1.0 hint = "If parameter 'Solid Background?' is disabled, then the background \ is assigned this color index value (0.0-1.0)" visible = (@showcolor && !@solidbg) endparam heading caption = "Mask Settings" endheading param showmasks caption = "Show Mask Params?" default = FALSE endparam param maskA caption = "Enable Mask?" default = FALSE hint = "If enabled, pixels can be masked by number of hits depending upon \ the values of parameter 'Mask If?' \ Masked pixels will be colored the solid color" visible = @showmasks endparam param maskifA caption = "Mask If Hits?" enum = "falls above" "falls below" "falls between" "falls outside" "equals" "not equal" default = 0 hint = "If 'Enable Mask?' is active, then this param sets the range of \ hit values that will be masked" visible = @showmasks && @maskA endparam param maskAmin caption = "Mask Threshold" default = 8 hint = "If 'Enable Mask?' is active, then this param sets the hit threshold \ for masking. If two values are needed, then this is the lower value \ for masking" visible = @showmasks && @maskA endparam param maskAmax caption = "Mask Maximum" default = 16 hint = "If 'Enable Mask?' is active and 'Mask If?' is set to \ 'falls between' or 'falls below', then this param sets the upper hit value \ for masking" visible = @showmasks && @maskA && ( (@maskifA == 2) || (@maskifA == 3) ) endparam } jam-Panels { ; Divides the fractal up into sections, with one active panel assigned to ; gradient position 2, and everything else assigned the #solid color. ; 170507 global: int panelwidth = int panelheight = 0 int xlow = int xhigh = int ylow = int yhigh = 0 int bordersize2 = 2 * @bordersize int bordersize3 = 3 * @bordersize int bordersize4 = 4 * @bordersize int bordersize5 = 5 * @bordersize int bordersize6 = 6 * @bordersize int bordersize7 = 7 * @bordersize int bordersize8 = 8 * @bordersize int bordersize9 = 9 * @bordersize int bordersize10 = 10 * @bordersize int bordersize11 = 11 * @bordersize int bordersize12 = 12 * @bordersize int bordersize13 = 13 * @bordersize float activecolor = 2/400 ; active panel will be set to this gradient value if @numberpanels == 2 if @arrangement2 == "horizontal" ; left-right panels panelwidth = round((#width + 1 - bordersize3)/2) panelheight = #height + 1 - bordersize2 if @activepanel2 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel2 == 2 ; right panel xlow = bordersize2 + panelwidth endif ; @activepanel2 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement2 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize3)/2) if @activepanel2 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel2 == 2 ; bottom panel ylow = bordersize2 + panelheight endif ; @activepanel2 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth endif ; @arrangement2 elseif @numberpanels == 3 if @arrangement3 == "horizontal" ; left-to-right panels panelwidth = round((#width + 1 - bordersize4)/3) panelheight = #height + 1 - bordersize2 if @activepanel3 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel3 == 2 ; middle panel xlow = bordersize2 + panelwidth elseif @activepanel3 == 3 ; right panel xlow = bordersize3 + 2 * panelwidth endif ; @activepanel3 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement3 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize4)/3) if @activepanel3 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel3 == 2 ; middle panel ylow = bordersize2 + panelheight elseif @activepanel3 == 3 ; bottom panel ylow = bordersize3 + 2 * panelheight endif ; @activepanel3 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement3 == "2x1V" ; two left, one right panels panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel3 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize3)/2) xlow = @bordersize ylow = @bordersize elseif @activepanel3 == 2 ; bottom left panel panelheight = round((#height + 1 - bordersize2)/2) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel3 == 3 ; right panel panelheight = #height + 1 - bordersize2 xlow = bordersize2 + panelwidth ylow = @bordersize endif ; @activepanel3 xhigh = xlow + panelwidth yhigh = ylow + panelheight elseif @arrangement3 == "1x2V" ; one left, two right panels panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel3 == 1 ; left panel is visible panelheight = #height + 1 - bordersize2 xlow = @bordersize ylow = @bordersize elseif @activepanel3 == 2 ; top right panel panelheight = round((#height + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel3 == 3 ; bottom right panel panelheight = round((#height + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight endif ; @activepanel3 xhigh = xlow + panelwidth yhigh = ylow + panelheight elseif @arrangement3 == "1x2H" ; one top, two bottom panels panelheight = round((#height + 1 - bordersize3)/2) if @activepanel3 == 1 ; top panel is visible panelwidth = #width + 1 - bordersize2 xlow = @bordersize ylow = @bordersize elseif @activepanel3 == 2 ; bottom left panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel3 == 3 ; bottom right panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight endif ; @activepanel3 xhigh = xlow + panelwidth yhigh = ylow + panelheight elseif @arrangement3 == "2x1H" ; two top, one bottom panels panelheight = round((#height + 1 - bordersize3)/2) if @activepanel3 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize3)/2) xlow = @bordersize ylow = @bordersize elseif @activepanel3 == 2 ; top right panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel3 == 3 ; bottom panel panelwidth = #width + 1 - bordersize2 xlow = @bordersize ylow = bordersize2 + panelheight endif ; @activepanel3 xhigh = xlow + panelwidth yhigh = ylow + panelheight endif ; @arrangement3 elseif @numberpanels == 4 if @arrangement4 == "horizontal" ; left-to-right panels panelwidth = round((#width + 1 - bordersize5)/4) panelheight = #height + 1 - bordersize2 if @activepanel4 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel4 == 2 ; middle left panel xlow = bordersize2 + panelwidth elseif @activepanel4 == 3 ; middle right panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel4 == 4 ; right panel xlow = bordersize4 + 3 * panelwidth endif ; @activepanel4 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement4 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize5)/4) if @activepanel4 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel4 == 2 ; middle top panel ylow = bordersize2 + panelheight elseif @activepanel4 == 3 ; middle bottom panel ylow = bordersize3 + 2 * panelheight elseif @activepanel4 == 4 ; bottom panel ylow = bordersize4 + 3 * panelheight endif ; @activepanel4 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement4 == "2x2" ; two left, two right panels panelwidth = round((#width + 1 - bordersize3)/2) panelheight = round((#height + 1 - bordersize3)/2) if @activepanel4 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel4 == 2 ; bottom left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel4 == 3 ; top right panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel4 == 4 ; bottom right panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight endif ; @activepanel4 xhigh = xlow + panelwidth yhigh = ylow + panelheight elseif @arrangement4 == "3x1V" ; three left, one right panels panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel4 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel4 == 2 ; middle left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel4 == 3 ; bottom left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel4 == 4 ; right panel is visible panelheight = #height + 1 - bordersize2 xlow = bordersize2 + panelwidth ylow = @bordersize endif ; @activepanel4 xhigh = xlow + panelwidth yhigh = ylow + panelheight elseif @arrangement4 == "1x3V" ; one left, three right panels panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel4 == 1 ; left panel is visible panelheight = #height + 1 - bordersize2 xlow = @bordersize ylow = @bordersize elseif @activepanel4 == 2 ; top right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel4 == 3 ; middle right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel4 == 4 ; bottom right panel is visible panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel4 xhigh = xlow + panelwidth yhigh = ylow + panelheight elseif @arrangement4 == "3x1H" ; three top, one bottom panels panelheight = round((#height + 1 - bordersize3)/2) if @activepanel4 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel4 == 2 ; top middle panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel4 == 3 ; top right panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel4 == 4 ; bottom panel is visible panelwidth = #width + 1 - bordersize2 xlow = @bordersize ylow = bordersize2 + panelheight endif ; @activepanel4 xhigh = xlow + panelwidth yhigh = ylow + panelheight elseif @arrangement4 == "1x3H" ; one top, three bottom panels panelheight = round((#height + 1 - bordersize3)/2) if @activepanel4 == 1 ; top panel is visible panelwidth = #width + 1 - bordersize2 xlow = @bordersize ylow = @bordersize elseif @activepanel4 == 2 ; bottom left panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel4 == 3 ; bottom middle panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel4 == 4 ; bottom right panel is visible panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel4 xhigh = xlow + panelwidth yhigh = ylow + panelheight endif ; @arrangement4 elseif @numberpanels == 5 if @arrangement5 == "horizontal" panelwidth = round((#width + 1 - bordersize6)/5) panelheight = #height + 1 - bordersize2 if @activepanel5 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel5 == 2 ; 2nd panel xlow = bordersize2 + panelwidth elseif @activepanel5 == 3 ; 3rd panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel5 == 4 ; 4th panel xlow = bordersize4 + 3 * panelwidth elseif @activepanel5 == 5 ; rightmost panel xlow = bordersize5 + 4 * panelwidth endif ; @activepanel5 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement5 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize6)/5) if @activepanel5 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel5 == 2 ; 2nd panel ylow = bordersize2 + panelheight elseif @activepanel5 == 3 ; 3rd panel ylow = bordersize3 + 2 * panelheight elseif @activepanel5 == 4 ; 4th panel ylow = bordersize4 + 3 * panelheight elseif @activepanel5 == 5 ; bottom panel ylow = bordersize5 + 4 * panelheight endif ; @activepanel5 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement5 == "3x2H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel5 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel5 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel5 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel5 == 4 ; bottom left panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel5 == 5 ; bottom right panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight endif ; @activepanel5 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement5 == "2x3H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel5 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize3)/2) xlow = @bordersize ylow = @bordersize elseif @activepanel5 == 2 ; top right panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel5 == 3 ; bottom left panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel5 == 4 ; bottom middle panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel5 == 5 ; bottom right panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel5 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement5 == "2x3V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel5 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize3)/2) xlow = @bordersize ylow = @bordersize elseif @activepanel5 == 2 ; bottom left panel panelheight = round((#height + 1 - bordersize3)/2) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel5 == 3 ; top right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel5 == 4 ; middle right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel5 == 5 ; bottom right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel5 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement5 == "3x2V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel5 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel5 == 2 ; middle left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel5 == 3 ; bottom left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel5 == 4 ; top right panel panelheight = round((#height + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel5 == 5 ; bottom right panel panelheight = round((#height + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight endif ; @activepanel5 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement5 == "4x1V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel5 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = @bordersize elseif @activepanel5 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel5 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel5 == 4 ; bottom left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel5 == 5 ; right panel panelheight = #height + 1 - bordersize2 xlow = bordersize2 + panelwidth ylow = @bordersize endif ; @activepanel5 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement5 == "1x4V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel5 == 1 ; left panel is visible panelheight = #height + 1 - bordersize2 xlow = @bordersize ylow = @bordersize elseif @activepanel5 == 2 ; top right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel5 == 3 ; 2nd right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel5 == 4 ; 3rd right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel5 == 5 ; bottom right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight endif ; @activepanel5 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement5 == "1x4H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel5 == 1 ; top panel is visible panelwidth = #width + 1 - bordersize2 xlow = @bordersize ylow = @bordersize elseif @activepanel5 == 2 ; bottom left panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel5 == 3 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel5 == 4 ; 3rd bottom panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel5 == 5 ; bottom right panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel5 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement5 == "4x1H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel5 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize5)/4) xlow = @bordersize ylow = @bordersize elseif @activepanel5 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel5 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel5 == 4 ; top right panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel5 == 5 ; bottom panel panelwidth = #width + 1 - bordersize2 xlow = @bordersize ylow = bordersize2 + panelheight endif ; @activepanel5 yhigh = ylow + panelheight xhigh = xlow + panelwidth endif ; @arranegment5 elseif @numberpanels == 6 if @arrangement6 == "horizontal" ; left-to-right panels panelwidth = round((#width + 1 - bordersize7)/6) panelheight = #height + 1 - bordersize2 if @activepanel6 == 1 ; leftmost panel is visible xlow = @bordersize elseif @activepanel6 == 2 ; 2nd panel xlow = bordersize2 + panelwidth elseif @activepanel6 == 3 ; 3rd panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel6 == 4 ; 4th panel xlow = bordersize4 + 3 * panelwidth elseif @activepanel6 == 5 ; 5th panel xlow = bordersize5 + 4 * panelwidth elseif @activepanel6 == 6 ; rightmost panel xlow = bordersize6 + 5 * panelwidth endif ; @activepanel6 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement6 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize7)/6) if @activepanel6 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel6 == 2 ; 2nd panel ylow = bordersize2 + panelheight elseif @activepanel6 == 3 ; 3rd panel ylow = bordersize3 + 2 * panelheight elseif @activepanel6 == 4 ; 4th panel ylow = bordersize4 + 3 * panelheight elseif @activepanel6 == 5 ; 5th panel ylow = bordersize5 + 4 * panelheight elseif @activepanel6 == 6 ; 6th panel ylow = bordersize6 + 5 * panelheight endif ; @activepanel6 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement6 == "3x2H" panelwidth = round((#width + 1 - bordersize4)/3) panelheight = round((#height + 1 - bordersize3)/2) if @activepanel6 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel6 == 2 ; 2nd top panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel6 == 3 ; 3rd top panel xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel6 == 4 ; bottom left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel6 == 5 ; bottom middle panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel6 == 6 ; bottom right panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel6 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement6 == "3x2V" panelwidth = round((#width + 1 - bordersize3)/2) panelheight = round((#height + 1 - bordersize4)/3) if @activepanel6 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel6 == 2 ; middle left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel6 == 3 ; bottom left panel xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel6 == 4 ; top right panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel6 == 5 ; middle right panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel6 == 6 ; bottom right panel xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel6 yhigh = ylow + panelheight xhigh = xlow + panelwidth endif ; @arranegment6 elseif @numberpanels == 7 if @arrangement7 == "horizontal" panelwidth = round((#width + 1 - bordersize8)/7) panelheight = #height + 1 - bordersize2 if @activepanel7 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel7 == 2 ; 2nd panel xlow = bordersize2 + panelwidth elseif @activepanel7 == 3 ; 3rd panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel7 == 4 ; 4th panel xlow = bordersize4 + 3 * panelwidth elseif @activepanel7 == 5 ; 5th panel xlow = bordersize5 + 4 * panelwidth elseif @activepanel7 == 6 ; 6th panel xlow = bordersize6 + 5 * panelwidth elseif @activepanel7 == 7 ; 7th panel xlow = bordersize7 + 6 * panelwidth endif ; @activepanel7 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement7 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize8)/7) if @activepanel7 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel7 == 2 ; 2nd panel ylow = bordersize2 + panelheight elseif @activepanel7 == 3 ; 3rd panel ylow = bordersize3 + 2 * panelheight elseif @activepanel7 == 4 ; 4th panel ylow = bordersize4 + 3 * panelheight elseif @activepanel7 == 5 ; 5th panel ylow = bordersize5 + 4 * panelheight elseif @activepanel7 == 6 ; 6th panel ylow = bordersize6 + 5 * panelheight elseif @activepanel7 == 7 ; 7th panel ylow = bordersize7 + 6 * panelheight endif ; @activepanel7 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement7 == "4x3H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel7 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize5)/4) xlow = @bordersize ylow = @bordersize elseif @activepanel7 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel7 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel7 == 4 ; 4th top panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel7 == 5 ; bottom left panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel7 == 6 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel7 == 7 ; bottom right panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel7 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement7 == "3x4H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel7 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel7 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel7 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel7 == 4 ; bottom left panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel7 == 5 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel7 == 6 ; 3rd bottom panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel7 == 7 ; 4th bottom panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel7 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement7 == "3x4V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel7 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel7 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel7 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel7 == 4 ; top right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel7 == 5 ; 2nd right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel7 == 6 ; 3rd right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel7 == 7 ; bottom right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight endif ; @activepanel7 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement7 == "4x3V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel7 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = @bordersize elseif @activepanel7 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel7 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel7 == 4 ; 4th left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel7 == 5 ; top right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel7 == 6 ; 2nd right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel7 == 7 ; 3rd right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel7 yhigh = ylow + panelheight xhigh = xlow + panelwidth endif ; @arranegment7 elseif @numberpanels == 8 if @arrangement8 == "horizontal" panelwidth = round((#width + 1 - bordersize9)/8) panelheight = #height + 1 - bordersize2 if @activepanel8 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel8 == 2 ; 2nd panel xlow = bordersize2 + panelwidth elseif @activepanel8 == 3 ; 3rd panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel8 == 4 ; 4th panel xlow = bordersize4 + 3 * panelwidth elseif @activepanel8 == 5 ; 5th panel xlow = bordersize5 + 4 * panelwidth elseif @activepanel8 == 6 ; 6th panel xlow = bordersize6 + 5 * panelwidth elseif @activepanel8 == 7 ; 7th panel xlow = bordersize7 + 6 * panelwidth elseif @activepanel8 == 8 ; 8th panel xlow = bordersize8 + 7 * panelwidth endif ; @activepanel8 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement8 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize9)/8) if @activepanel8 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel8 == 2 ; 2nd panel ylow = bordersize2 + panelheight elseif @activepanel8 == 3 ; 3rd panel ylow = bordersize3 + 2 * panelheight elseif @activepanel8 == 4 ; 4th panel ylow = bordersize4 + 3 * panelheight elseif @activepanel8 == 5 ; 5th panel ylow = bordersize5 + 4 * panelheight elseif @activepanel8 == 6 ; 6th panel ylow = bordersize6 + 5 * panelheight elseif @activepanel8 == 7 ; 7th panel ylow = bordersize7 + 6 * panelheight elseif @activepanel8 == 8 ; 8th panel ylow = bordersize8 + 7 * panelheight endif ; @activepanel8 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement8 == "4x2H" panelheight = round((#height + 1 - bordersize3)/2) panelwidth = round((#width + 1 - bordersize5)/4) if @activepanel8 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel8 == 2 ; 2nd top panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel8 == 3 ; 3rd top panel xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel8 == 4 ; 4th top panel xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel8 == 5 ; bottom left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel8 == 6 ; 2nd bottom panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 7 ; 3rd bottom panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 8 ; 4th bottom panel xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel8 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement8 == "4x2V" panelwidth = round((#width + 1 - bordersize3)/2) panelheight = round((#height + 1 - bordersize5)/4) if @activepanel8 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel8 == 2 ; 2nd left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel8 == 3 ; 3rd left panel xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel8 == 4 ; 4th left panel xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel8 == 5 ; top right panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel8 == 6 ; 2nd right panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 7 ; 3rd right panel xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel8 == 8 ; 4th right panel xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight endif ; @activepanel8 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement8 == "5x3H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel8 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize6)/5) xlow = @bordersize ylow = @bordersize elseif @activepanel8 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel8 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel8 == 4 ; 4th top panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel8 == 5 ; 5th top panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize5 + 4 * panelwidth ylow = @bordersize elseif @activepanel8 == 6 ; bottom left panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel8 == 7 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 8 ; bottom right panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel8 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement8 == "3x5H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel8 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel8 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel8 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel8 == 4 ; bottom left panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel8 == 5 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 6 ; 3rd bottom panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 7 ; 4th bottom panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 8 ; 5th bottom panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize5 + 4 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel8 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement8 == "3x5V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel8 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel8 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel8 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel8 == 4 ; top right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel8 == 5 ; 2nd right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 6 ; 3rd right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel8 == 7 ; 4th right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight elseif @activepanel8 == 8 ; 5th right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize5 + 4 * panelheight endif ; @activepanel8 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement8 == "5x3V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel8 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = @bordersize elseif @activepanel8 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel8 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel8 == 4 ; 4th left panel panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel8 == 5 ; 5th left panel panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize5 + 4 * panelheight elseif @activepanel8 == 6 ; top right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel8 == 7 ; 2nd right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel8 == 8 ; 3rd right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel8 yhigh = ylow + panelheight xhigh = xlow + panelwidth endif ; @arranegment8 elseif @numberpanels == 9 if @arrangement9 == "horizontal" panelwidth = round((#width + 1 - bordersize10)/9) panelheight = #height + 1 - bordersize2 if @activepanel9 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel9 == 2 ; 2nd panel xlow = bordersize2 + panelwidth elseif @activepanel9 == 3 ; 3rd panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel9 == 4 ; 4th panel xlow = bordersize4 + 3 * panelwidth elseif @activepanel9 == 5 ; 5th panel xlow = bordersize5 + 4 * panelwidth elseif @activepanel9 == 6 ; 6th panel xlow = bordersize6 + 5 * panelwidth elseif @activepanel9 == 7 ; 7th panel xlow = bordersize7 + 6 * panelwidth elseif @activepanel9 == 8 ; 8th panel xlow = bordersize8 + 7 * panelwidth elseif @activepanel9 == 9 ; 9th panel xlow = bordersize9 + 8 * panelwidth endif ; @activepanel9 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement9 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize10)/9) if @activepanel9 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel9 == 2 ; 2nd panel ylow = bordersize2 + panelheight elseif @activepanel9 == 3 ; 3rd panel ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 4 ; 4th panel ylow = bordersize4 + 3 * panelheight elseif @activepanel9 == 5 ; 5th panel ylow = bordersize5 + 4 * panelheight elseif @activepanel9 == 6 ; 6th panel ylow = bordersize6 + 5 * panelheight elseif @activepanel9 == 7 ; 7th panel ylow = bordersize7 + 6 * panelheight elseif @activepanel9 == 8 ; 8th panel ylow = bordersize8 + 7 * panelheight elseif @activepanel9 == 9 ; 9th panel ylow = bordersize9 + 8 * panelheight endif ; @activepanel9 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement9 == "3x3" panelheight = round((#height + 1 - bordersize4)/3) panelwidth = round((#width + 1 - bordersize4)/3) if @activepanel9 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 2 ; 2nd top panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel9 == 3 ; 3rd top panel xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel9 == 4 ; 1st middle panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel9 == 5 ; 2nd middle panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 6 ; 3rd middle panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 7 ; bottom left panel xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 8 ; 2nd bottom panel xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 9 ; 3rd bottom panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement9 == "7x2H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel9 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize8)/7) xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel9 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel9 == 4 ; 4th top panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel9 == 5 ; 5th top panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize5 + 4 * panelwidth ylow = @bordersize elseif @activepanel9 == 6 ; 6th top panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize6 + 5 * panelwidth ylow = @bordersize elseif @activepanel9 == 7 ; 7th top panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize7 + 6 * panelwidth ylow = @bordersize elseif @activepanel9 == 8 ; bottom left panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel9 == 9 ; bottom right panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement9 == "7x2V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel9 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize8)/7) xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize8)/7) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel9 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize8)/7) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 4 ; 4th left panel panelheight = round((#height + 1 - bordersize8)/7) xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel9 == 5 ; 5th left panel panelheight = round((#height + 1 - bordersize8)/7) xlow = @bordersize ylow = bordersize5 + 4 * panelheight elseif @activepanel9 == 6 ; 6th left panel panelheight = round((#height + 1 - bordersize8)/7) xlow = @bordersize ylow = bordersize6 + 5 * panelheight elseif @activepanel9 == 7 ; 7th left panel panelheight = round((#height + 1 - bordersize8)/7) xlow = @bordersize ylow = bordersize7 + 6 * panelheight elseif @activepanel9 == 8 ; top right panel panelheight = round((#height + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel9 == 9 ; 2nd right panel panelheight = round((#height + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement9 == "2x7H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel9 == 1 ; bottom left panel is visible panelwidth = round((#width + 1 - bordersize8)/7) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel9 == 2 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 3 ; 3rd bottom panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 4 ; 4th bottom panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 5 ; 5th bottom panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize5 + 4 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 6 ; 6th bottom panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize6 + 5 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 7 ; 7th bottom panel panelwidth = round((#width + 1 - bordersize8)/7) xlow = bordersize7 + 6 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 8 ; top left panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 9 ; top right panel panelwidth = round((#width + 1 - bordersize3)/2) xlow = bordersize2 + panelwidth ylow = @bordersize endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement9 == "2x7V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel9 == 1 ; top right panel is visible panelheight = round((#height + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel9 == 2 ; 2nd right panel panelheight = round((#height + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 3 ; 3rd right panel panelheight = round((#height + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 4 ; 4th right panel panelheight = round((#height + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight elseif @activepanel9 == 5 ; 5th right panel panelheight = round((#height + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = bordersize5 + 4 * panelheight elseif @activepanel9 == 6 ; 6th right panel panelheight = round((#height + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = bordersize6 + 5 * panelheight elseif @activepanel9 == 7 ; 7th right panel panelheight = round((#height + 1 - bordersize8)/7) xlow = bordersize2 + panelwidth ylow = bordersize7 + 6 * panelheight elseif @activepanel9 == 8 ; top left panel panelheight = round((#height + 1 - bordersize3)/2) xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 9 ; 2nd left panel panelheight = round((#height + 1 - bordersize3)/2) xlow = @bordersize ylow = bordersize2 + panelheight endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement9 == "5x4H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel9 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize6)/5) xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel9 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel9 == 4 ; 4th top panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel9 == 5 ; 5th top panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize5 + 4 * panelwidth ylow = @bordersize elseif @activepanel9 == 6 ; bottom left panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel9 == 7 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 8 ; 3rd bottom panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 9 ; bottom right panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement9 == "4x5H" panelheight = round((#height + 1 - bordersize3)/2) if @activepanel9 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize5)/4) xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel9 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel9 == 4 ; 4th top panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel9 == 5 ; bottom left panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel9 == 6 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 7 ; 3rd bottom panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 8 ; 4th bottom panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 9 ; 5th bottom panel panelwidth = round((#width + 1 - bordersize6)/5) xlow = bordersize5 + 4 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement9 == "4x5V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel9 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel9 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 4 ; 4th left panel panelheight = round((#height + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel9 == 5 ; top right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel9 == 6 ; 2nd right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 7 ; 3rd right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 8 ; 4th right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight elseif @activepanel9 == 9 ; 5th right panel panelheight = round((#height + 1 - bordersize6)/5) xlow = bordersize2 + panelwidth ylow = bordersize5 + 4 * panelheight endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement9 == "5x4V" panelwidth = round((#width + 1 - bordersize3)/2) if @activepanel9 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = @bordersize elseif @activepanel9 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel9 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 4 ; 4th left panel panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel9 == 5 ; 5th left panel panelheight = round((#height + 1 - bordersize6)/5) xlow = @bordersize ylow = bordersize5 + 4 * panelheight elseif @activepanel9 == 6 ; top right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel9 == 7 ; 2nd right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel9 == 8 ; 3rd right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel9 == 9 ; 4th right panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight endif ; @activepanel9 yhigh = ylow + panelheight xhigh = xlow + panelwidth endif ; @arranegment9 elseif @numberpanels == 10 if @arrangement10 == "horizontal" panelwidth = round((#width + 1 - bordersize11)/10) panelheight = #height + 1 - bordersize2 if @activepanel10 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel10 == 2 ; 2nd panel xlow = bordersize2 + panelwidth elseif @activepanel10 == 3 ; 3rd panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel10 == 4 ; 4th panel xlow = bordersize4 + 3 * panelwidth elseif @activepanel10 == 5 ; 5th panel xlow = bordersize5 + 4 * panelwidth elseif @activepanel10 == 6 ; 6th panel xlow = bordersize6 + 5 * panelwidth elseif @activepanel10 == 7 ; 7th panel xlow = bordersize7 + 6 * panelwidth elseif @activepanel10 == 8 ; 8th panel xlow = bordersize8 + 7 * panelwidth elseif @activepanel10 == 9 ; 9th panel xlow = bordersize9 + 8 * panelwidth elseif @activepanel10 == 10 ; 10th panel xlow = bordersize10 + 9 * panelwidth endif ; @activepanel10 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement10 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize11)/10) if @activepanel10 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel10 == 2 ; 2nd panel ylow = bordersize2 + panelheight elseif @activepanel10 == 3 ; 3rd panel ylow = bordersize3 + 2 * panelheight elseif @activepanel10 == 4 ; 4th panel ylow = bordersize4 + 3 * panelheight elseif @activepanel10 == 5 ; 5th panel ylow = bordersize5 + 4 * panelheight elseif @activepanel10 == 6 ; 6th panel ylow = bordersize6 + 5 * panelheight elseif @activepanel10 == 7 ; 7th panel ylow = bordersize7 + 6 * panelheight elseif @activepanel10 == 8 ; 8th panel ylow = bordersize8 + 7 * panelheight elseif @activepanel10 == 9 ; 9th panel ylow = bordersize9 + 8 * panelheight elseif @activepanel10 == 10 ; 10th panel ylow = bordersize10 + 9 * panelheight endif ; @activepanel10 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement10 == "5x2H" panelheight = round((#height + 1 - bordersize3)/2) panelwidth = round((#width + 1 - bordersize6)/5) if @activepanel10 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel10 == 2 ; 2nd top panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel10 == 3 ; 3rd top panel xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel10 == 4 ; 4th top panel xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel10 == 5 ; 5th top panel xlow = bordersize5 + 4 * panelwidth ylow = @bordersize elseif @activepanel10 == 6 ; bottom left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel10 == 7 ; 2nd bottom panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 8 ; 3rd bottom panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 9 ; 4th bottom panel xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 10 ; 5th bottom panel xlow = bordersize5 + 4 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel10 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement10 == "5x2V" panelwidth = round((#width + 1 - bordersize3)/2) panelheight = round((#height + 1 - bordersize6)/5) if @activepanel10 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel10 == 2 ; 2nd left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel10 == 3 ; 3rd left panel xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel10 == 4 ; 4th left panel xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel10 == 5 ; 5th left panel xlow = @bordersize ylow = bordersize5 + 4 * panelheight elseif @activepanel10 == 6 ; top right panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel10 == 7 ; 2nd right panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 8 ; 3rd right panel xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel10 == 9 ; 4th right panel xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight elseif @activepanel10 == 10 ; 5th right panel xlow = bordersize2 + panelwidth ylow = bordersize5 + 4 * panelheight endif ; @activepanel10 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement10 == "3-4-3H" panelheight = round((#height + 1 - bordersize4)/3) if @activepanel10 == 1 ; top left panel is visible panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel10 == 2 ; 2nd top panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel10 == 3 ; 3rd top panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel10 == 4 ; 1st middle panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel10 == 5 ; 2nd middle panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 6 ; 3rd middle panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 7 ; 4th middle panel panelwidth = round((#width + 1 - bordersize5)/4) xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 8 ; bottom left panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel10 == 9 ; 2nd bottom panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel10 == 10 ; 3rd bottom panel panelwidth = round((#width + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel10 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement10 == "3-4-3V" panelwidth = round((#width + 1 - bordersize4)/3) if @activepanel10 == 1 ; top left panel is visible panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = @bordersize elseif @activepanel10 == 2 ; 2nd left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel10 == 3 ; 3rd left panel panelheight = round((#height + 1 - bordersize4)/3) xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel10 == 4 ; 1st middle panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel10 == 5 ; 2nd middle panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 6 ; 3rd middle panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel10 == 7 ; 4th middle panel panelheight = round((#height + 1 - bordersize5)/4) xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight elseif @activepanel10 == 8 ; top right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel10 == 9 ; 2nd right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel10 == 10 ; 3rd right panel panelheight = round((#height + 1 - bordersize4)/3) xlow = bordersize3 + 2 * panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel10 yhigh = ylow + panelheight xhigh = xlow + panelwidth endif ; @arranegment10 elseif @numberpanels == 11 if @arrangement11 == "horizontal" panelwidth = round((#width + 1 - bordersize12)/11) panelheight = #height + 1 - bordersize2 if @activepanel11 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel11 == 2 ; 2nd panel xlow = bordersize2 + panelwidth elseif @activepanel11 == 3 ; 3rd panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel11 == 4 ; 4th panel xlow = bordersize4 + 3 * panelwidth elseif @activepanel11 == 5 ; 5th panel xlow = bordersize5 + 4 * panelwidth elseif @activepanel11 == 6 ; 6th panel xlow = bordersize6 + 5 * panelwidth elseif @activepanel11 == 7 ; 7th panel xlow = bordersize7 + 6 * panelwidth elseif @activepanel11 == 8 ; 8th panel xlow = bordersize8 + 7 * panelwidth elseif @activepanel11 == 9 ; 9th panel xlow = bordersize9 + 8 * panelwidth elseif @activepanel11 == 10 ; 10th panel xlow = bordersize10 + 9 * panelwidth elseif @activepanel11 == 11 ; 11th panel xlow = bordersize11 + 10 * panelwidth endif ; @activepanel11 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement11 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize12)/11) if @activepanel11 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel11 == 2 ; 2nd panel ylow = bordersize2 + panelheight elseif @activepanel11 == 3 ; 3rd panel ylow = bordersize3 + 2 * panelheight elseif @activepanel11 == 4 ; 4th panel ylow = bordersize4 + 3 * panelheight elseif @activepanel11 == 5 ; 5th panel ylow = bordersize5 + 4 * panelheight elseif @activepanel11 == 6 ; 6th panel ylow = bordersize6 + 5 * panelheight elseif @activepanel11 == 7 ; 7th panel ylow = bordersize7 + 6 * panelheight elseif @activepanel11 == 8 ; 8th panel ylow = bordersize8 + 7 * panelheight elseif @activepanel11 == 9 ; 9th panel ylow = bordersize9 + 8 * panelheight elseif @activepanel11 == 10 ; 10th panel ylow = bordersize10 + 9 * panelheight elseif @activepanel11 == 11 ; 11th panel ylow = bordersize11 + 10 * panelheight endif ; @activepanel11 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth endif ; @arranegment11 elseif @numberpanels == 12 if @arrangement12 == "horizontal" panelwidth = round((#width + 1 - bordersize13)/12) panelheight = #height + 1 - bordersize2 if @activepanel12 == 1 ; left panel is visible xlow = @bordersize elseif @activepanel12 == 2 ; 2nd panel xlow = bordersize2 + panelwidth elseif @activepanel12 == 3 ; 3rd panel xlow = bordersize3 + 2 * panelwidth elseif @activepanel12 == 4 ; 4th panel xlow = bordersize4 + 3 * panelwidth elseif @activepanel12 == 5 ; 5th panel xlow = bordersize5 + 4 * panelwidth elseif @activepanel12 == 6 ; 6th panel xlow = bordersize6 + 5 * panelwidth elseif @activepanel12 == 7 ; 7th panel xlow = bordersize7 + 6 * panelwidth elseif @activepanel12 == 8 ; 8th panel xlow = bordersize8 + 7 * panelwidth elseif @activepanel12 == 9 ; 9th panel xlow = bordersize9 + 8 * panelwidth elseif @activepanel12 == 10 ; 10th panel xlow = bordersize10 + 9 * panelwidth elseif @activepanel12 == 11 ; 11th panel xlow = bordersize11 + 10 * panelwidth elseif @activepanel12 == 12 ; 12th panel xlow = bordersize12 + 11 * panelwidth endif ; @activepanel12 xhigh = xlow + panelwidth ylow = @bordersize yhigh = ylow + panelheight elseif @arrangement12 == "vertical" ; top-bottom panels panelwidth = #width + 1 - bordersize2 panelheight = round((#height + 1 - bordersize13)/12) if @activepanel12 == 1 ; top panel is visible ylow = @bordersize elseif @activepanel12 == 2 ; 2nd panel ylow = bordersize2 + panelheight elseif @activepanel12 == 3 ; 3rd panel ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 4 ; 4th panel ylow = bordersize4 + 3 * panelheight elseif @activepanel12 == 5 ; 5th panel ylow = bordersize5 + 4 * panelheight elseif @activepanel12 == 6 ; 6th panel ylow = bordersize6 + 5 * panelheight elseif @activepanel12 == 7 ; 7th panel ylow = bordersize7 + 6 * panelheight elseif @activepanel12 == 8 ; 8th panel ylow = bordersize8 + 7 * panelheight elseif @activepanel12 == 9 ; 9th panel ylow = bordersize9 + 8 * panelheight elseif @activepanel12 == 10 ; 10th panel ylow = bordersize10 + 9 * panelheight elseif @activepanel12 == 11 ; 11th panel ylow = bordersize11 + 10 * panelheight elseif @activepanel12 == 12 ; 12th panel ylow = bordersize12 + 11 * panelheight endif ; @activepanel12 yhigh = ylow + panelheight xlow = @bordersize xhigh = xlow + panelwidth elseif @arrangement12 == "6x2H" panelheight = round((#height + 1 - bordersize3)/2) panelwidth = round((#width + 1 - bordersize7)/6) if @activepanel12 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel12 == 2 ; 2nd top panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel12 == 3 ; 3rd top panel xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel12 == 4 ; 4th top panel xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel12 == 5 ; 5th top panel xlow = bordersize5 + 4 * panelwidth ylow = @bordersize elseif @activepanel12 == 6 ; 6th top panel xlow = bordersize6 + 5 * panelwidth ylow = @bordersize elseif @activepanel12 == 7 ; bottom left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel12 == 8 ; 2nd bottom panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 9 ; 3rd bottom panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 10 ; 4th bottom panel xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 11 ; 5th bottom panel xlow = bordersize5 + 4 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 12 ; 6th bottom panel xlow = bordersize6 + 5 * panelwidth ylow = bordersize2 + panelheight endif ; @activepanel12 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement12 == "6x2V" panelwidth = round((#width + 1 - bordersize3)/2) panelheight = round((#height + 1 - bordersize7)/6) if @activepanel12 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel12 == 2 ; 2nd left panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel12 == 3 ; 3rd left panel xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 4 ; 4th left panel xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel12 == 5 ; 5th left panel xlow = @bordersize ylow = bordersize5 + 4 * panelheight elseif @activepanel12 == 6 ; 6th left panel xlow = @bordersize ylow = bordersize6 + 5 * panelheight elseif @activepanel12 == 7 ; top right panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel12 == 8 ; 2nd right panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 9 ; 3rd right panel xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 10 ; 4th right panel xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight elseif @activepanel12 == 11 ; 5th right panel xlow = bordersize2 + panelwidth ylow = bordersize5 + 4 * panelheight elseif @activepanel12 == 12 ; 6th right panel xlow = bordersize2 + panelwidth ylow = bordersize6 + 5 * panelheight endif ; @activepanel12 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement12 == "4x3H" panelheight = round((#height + 1 - bordersize4)/3) panelwidth = round((#width + 1 - bordersize5)/4) if @activepanel12 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel12 == 2 ; 2nd top panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel12 == 3 ; 3rd top panel xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel12 == 4 ; 4th top panel xlow = bordersize4 + 3 * panelwidth ylow = @bordersize elseif @activepanel12 == 5 ; 1st middle panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel12 == 6 ; 2nd middle panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 7 ; 3rd middle panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 8 ; 4th middle panel xlow = bordersize4 + 3 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 9 ; bottom left panel xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 10 ; 2nd bottom panel xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 11 ; 3rd bottom panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 12 ; 4th bottom panel xlow = bordersize4 + 3 * panelwidth ylow = bordersize3 + 2 * panelheight endif ; @activepanel12 yhigh = ylow + panelheight xhigh = xlow + panelwidth elseif @arrangement12 == "4x3V" panelheight = round((#height + 1 - bordersize5)/4) panelwidth = round((#width + 1 - bordersize4)/3) if @activepanel12 == 1 ; top left panel is visible xlow = @bordersize ylow = @bordersize elseif @activepanel12 == 2 ; 2nd top panel xlow = bordersize2 + panelwidth ylow = @bordersize elseif @activepanel12 == 3 ; 3rd top panel xlow = bordersize3 + 2 * panelwidth ylow = @bordersize elseif @activepanel12 == 4 ; 1st upper middle panel xlow = @bordersize ylow = bordersize2 + panelheight elseif @activepanel12 == 5 ; 2nd upper middle panel xlow = bordersize2 + panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 6 ; 3rd upper middle panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize2 + panelheight elseif @activepanel12 == 7 ; 1st lower middle panel xlow = @bordersize ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 8 ; 2nd lower middle panel xlow = bordersize2 + panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 9 ; 3rd lower middle panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize3 + 2 * panelheight elseif @activepanel12 == 10 ; bottom left panel xlow = @bordersize ylow = bordersize4 + 3 * panelheight elseif @activepanel12 == 11 ; 2nd bottom panel xlow = bordersize2 + panelwidth ylow = bordersize4 + 3 * panelheight elseif @activepanel12 == 12 ; 3rd bottom panel xlow = bordersize3 + 2 * panelwidth ylow = bordersize4 + 3 * panelheight endif ; @activepanel12 yhigh = ylow + panelheight xhigh = xlow + panelwidth endif ; @arranegment12 endif ; @numberpanels init: loop: final: if @invert if ((#x >= xlow) && (#x <= xhigh) && (#y >= ylow) && (#y <= yhigh)) #solid = TRUE else #index = activecolor endif ; #x else if ((#x >= xlow) && (#x <= xhigh) && (#y >= ylow) && (#y <= yhigh)) #index = activecolor else #solid = TRUE endif ; #x endif ; @invert default: title = "Panels" heading text = "Instead of using this coloring formula, consider using the \ 'Panels' transform in the public folder jam.uxf" endheading param numberpanels caption = "Number of Panels" default = 2 min = 2 max = 12 hint = "This parameter determines into how many panels the image is divided." endparam param arrangement2 caption = "Panel Arrangement" enum = "horizontal" "vertical" default = 0 hint = "This parameter determines whether the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 2 endparam param activepanel2 caption = "Active Panel" default = 1 min = 1 max = 2 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 2 endparam param arrangement3 caption = "Panel Arrangement" enum = "horizontal" "vertical" "2x1V" "1x2V" "1x2H" "2x1H" default = 0 hint = "This parameter determines whether the panels are arranged left-right \ or top-bottom. '2x1V' means two panels on the left, one larger panel on the right." visible = @numberpanels == 3 endparam param activepanel3 caption = "Active Panel" default = 1 min = 1 max = 3 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 3 endparam param arrangement4 caption = "Panel Arrangement" enum = "horizontal" "vertical" "2x2" "3x1V" "1x3V" "3x1H" "1x3H" default = 0 hint = "This parameter determines whether the panels are arranged left-right \ or top-bottom. '2x2' means two panels on the left, two panels on the right." visible = @numberpanels == 4 endparam param activepanel4 caption = "Active Panel" default = 1 min = 1 max = 4 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 4 endparam param arrangement5 caption = "Panel Arrangement" enum = "horizontal" "vertical" "3x2H" "2x3H" "2x3V" "3x2V" "4x1V" "1x4V" "4x1H" "1x4H" default = 0 hint = "This parameter determines how the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 5 endparam param activepanel5 caption = "Active Panel" default = 1 min = 1 max = 5 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 5 endparam param arrangement6 caption = "Panel Arrangement" enum = "horizontal" "vertical" "3x2H" "3x2V" default = 0 hint = "This parameter determines how the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 6 endparam param activepanel6 caption = "Active Panel" default = 1 min = 1 max = 6 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 6 endparam param arrangement7 caption = "Panel Arrangement" enum = "horizontal" "vertical" "4x3H" "3x4H" "4x3V" "3x4V" default = 0 hint = "This parameter determines how the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 7 endparam param activepanel7 caption = "Active Panel" default = 1 min = 1 max = 7 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 7 endparam param arrangement8 caption = "Panel Arrangement" enum = "horizontal" "vertical" "4x2H" "4x2V" "5x3H" "5x3V" "3x5H" "3x5V" default = 0 hint = "This parameter determines how the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 8 endparam param activepanel8 caption = "Active Panel" default = 1 min = 1 max = 8 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 8 endparam param arrangement9 caption = "Panel Arrangement" enum = "horizontal" "vertical" "3x3" "7x2H" "7x2V" "2x7H" "2x7V" \ "5x4H" "5x4V" "4x5H" "4x5V" default = 0 hint = "This parameter determines how the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 9 endparam param activepanel9 caption = "Active Panel" default = 1 min = 1 max = 9 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 9 endparam param arrangement10 caption = "Panel Arrangement" enum = "horizontal" "vertical" "5x2H" "5x2V" "3-4-3H" "3-4-3V" default = 0 hint = "This parameter determines how the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 10 endparam param activepanel10 caption = "Active Panel" default = 1 min = 1 max = 10 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 10 endparam param arrangement11 caption = "Panel Arrangement" enum = "horizontal" "vertical" default = 0 hint = "This parameter determines how the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 11 endparam param activepanel11 caption = "Active Panel" default = 1 min = 1 max = 11 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 11 endparam param arrangement12 caption = "Panel Arrangement" enum = "horizontal" "vertical" "6x2H" "6x2V" "4x3H" "4x3V" default = 0 hint = "This parameter determines how the panels are arranged left-right \ or top-bottom." visible = @numberpanels == 12 endparam param activepanel12 caption = "Active Panel" default = 1 min = 1 max = 12 hint = "This setting determines which of the panels will be visible (i.e., \ not colored the #solid color)." visible = @numberpanels == 12 endparam param bordersize caption = "Border Size" default = 10 min = 0 hint = "This parameter sets the size of the separator and border surrounding the \ panels, in pixels." endparam param invert caption = "Invert Solid Coloring?" default = FALSE hint = "If selected, the #solid and gradient colorings are reversed." endparam }